Ниже представлен сценарий, который позволяет получить рекомендации по индексам, которых в обозримом прошлом недоставало базе данных, в контексте которой этот сценарий исполняется. Учтите, что сценарий в целях наглядности был упрощён, поэтому результирующие команды по созданию индексов, наверняка, будут содержать ошибки, т.к. тут не учитывается возможность отсутствия не относящихся к предикатам эквивалентности колонок, а также колонок, которые в индексе будут присоединёнными. Впрочем, эти ошибки легко устранимы, просто поищите лишние запятые перед запуском сценария, а также не забудьте удалить пустые инструкции INCLUDE.
-- Не забудьте поправить сценарий создания индексов,
-- убрав лишние запятые или пустую инструкцию INCLUDE
SELECT
[Рекомендуемый индекс]=
'-- CREATE INDEX [IX_' + OBJECT_NAME(mid.object_id) +
'_' +
CAST(mid.index_handle AS nvarchar) + '] ON ' +
mid.statement + ' (' + ISNULL(mid.equality_columns,'') +
', ' + ISNULL(mid.inequality_columns,'') +
') INCLUDE (' + ISNULL(mid.included_columns,'') + ');',
[Число компиляций] =
migs.unique_compiles,
[Количество операций поиска] = migs.user_seeks,
[Количество операций просмотра] = migs.user_scans,
[Средняя стоимость ] = CAST(migs.avg_total_user_cost
AS int),
[Средний процент выигрыша] = CAST(migs.avg_user_impact AS
int)
FROM
sys.dm_db_missing_index_groups mig
JOIN
sys.dm_db_missing_index_group_stats migs
ON
migs.group_handle = mig.index_group_handle
JOIN
sys.dm_db_missing_index_details mid
ON
mig.index_handle = mid.index_handle
AND
mid.database_id = DB_ID()
Комментариев нет:
Отправить комментарий