Скрипт 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 не будет опубликован. Обязательные поля помечены *