Скрипт SQL для оптимизации базы 1c

Скрипт, помогающий создать нужные индексы, улучшающие работу базы 1С.

Для использования данного скрипта необходимо открыть SQL Qwery SQL Server Managment Studio у интересующей вас базы. И выполнить данный скрипт, который покажет каких индексов не хватает, это статистика собранная SQL Server. Следующий шаг необходимо в режиме конфигуратора 1С создать нужные индексы. 

— Не забудьте поправить сценарий создания индексов,
— убрав лишние запятые или пустую инструкцию INCLUDE
SELECT OBJECT_NAME(d.object_id), [Рекомендуемый индекс]=
‘— CREATE INDEX [IX_’ + OBJECT_NAME(d.object_id) + ‘_’ +
CAST(d.index_handle AS nvarchar) + ‘] ON ‘ +
d.statement + ‘ (‘ + ISNULL(d.equality_columns,») +
‘, ‘ + ISNULL(d.inequality_columns,») +
‘) INCLUDE (‘ + ISNULL(d.included_columns,») + ‘);’,
[Число компиляций] = s.unique_compiles,
[Количество операций поиска] = s.user_seeks,
[Количество операций просмотра] = s.user_scans,
[Средняя стоимость ] = CAST(s.avg_total_user_cost AS int),
[Средний процент выигрыша] = CAST(s.avg_user_impact AS int)
FROM sys.dm_db_missing_index_groups g
JOIN sys.dm_db_missing_index_group_stats s ON s.group_handle = g.index_group_handle
JOIN sys.dm_db_missing_index_details d ON g.index_handle = d.index_handle
AND d.database_id = DB_ID()
order by /*1,*/ 7 desc, 6 desc

8 Comments

  1. dyak84

    Очень Интересно на выходних нада будет обязательно попробовать поколдовать над базой даних. Если чеого из етого выйдет обязательно отпишусь

    Reply ↓
  2. Артано

    (1) Судя по коду скрипт считает количество обращений к тем или иным колонкам таблиц и сортирует необходимости индексирования. Было бы интересно сделать обработку выполняющую этот скрипт и выводящую не имена SQL-таблиц, а имена объектов метаданных

    Reply ↓
  3. KroVladS

    Спасибо.

    Попробую на досуге.

    Reply ↓
  4. DenisCh

    (2) Артано, сделай (с) 🙂

    Все данные для этого есть. Кроме того, тут встречал года полтора-два назад подобное.

    Reply ↓
  5. vpaull

    Вот-с так с именами объектов метаданных.

    В модуле формы в функции Подключение() надо поправить строку

    cnn.connectionString = «SERVER=СЕРВЕРСКЛ; Database=ИМЯБАЗЫ; DRIVER=SQL Server; UID=ПОЛЬЗОВАТЕЛЬСКЛ; PWD=ПАРОЛЬСКЛ;»;

    Подставить соответствующие значения.

    В обработке есть неучтенки по метаданным, но их легко можно добавить имея руки

    На чистоту и бережность кода не претендую — сделано из интереса на коленке.

    Reply ↓
  6. smielka

    (5) vpaull, спасибо)

    Reply ↓
  7. Артано

    (5) Поправил сортировку, добавил статистики

    Reply ↓
  8. isn

    Для наглядности сформируйте отчет из разных баз данных на разных конфигурациях, чтобы показать целесообразность данной обработки.

    Reply ↓

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *