Контроль наличия индексов MS SQL SERVER

Поставили задачу- перед началом важного расчета проверять наличие индексов. Условно можно разделить на постоянную группу- она контролируется специальными методами и жестко сопровождается в дизайнере на уровне концептуальной модели. Вторая группа- адаптивная, создаются на ограниченное время для выполнения неких особых заданий. После в зависимости от условий они вовсе удаляются, заменяются новыми или легализуются. Тем не менее, в модели их нет, перед расчетом их наличие не проверить- положить систему по блокировкам.

 

Скрипт оказался очень простым и красивым:
USE [work_db_name]
GO

–Контроль наличия важных индексов

;with i as
(select ‘_контроль работы скрипта- эта запись должна быть единственной_’ as i
union select ‘Index_name_1’
union select ‘Index_name_2’
union select ‘Index_name_3’
union select ‘Index_name_4’
union select ‘Index_name_5’
union select ‘Index_name_6’
)
select ‘Не создан индекс:’,i.i from i
LEFT JOIN sys.sysindexes si ON si.name=i.i
WHERE si.name IS NULL

Добавить комментарий

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