четверг, 9 августа 2012 г.

Поиск неиспользуемых индексов

Это скорее запись для себя, что бы всегда иметь под рукой запрос, который ищет все неиспользуемые индексы. Ниже приведен запрос, который ищет неиспользуемые индексы. И это может быть не только мертвый груз, который занимает место на ваших дисках, но и индексы, которые из-за частого обновления пагубно влияют на производительность вашей системы.

SELECT   
         OBJECT_SCHEMA_NAME(i.object_id)AS [Schema Name],
  OBJECT_NAME(i.object_id) AS [Table Name],
         i.name AS [Not Used Index Name],
         s.last_user_update AS [Last Update Time],
         s.user_updates AS [Updates]
FROM     sys.dm_db_index_usage_stats AS s
JOIN     sys.indexes AS i
ON       i.object_id = s.object_id
AND      i.index_id = s.index_id
JOIN     sys.objects AS o
ON       o.object_id = s.object_id
WHERE    s.database_id = DB_ID()
AND      (    user_scans   = 0
          AND user_seeks   = 0
          AND user_lookups = 0
          AND last_user_scan   IS NULL
          AND last_user_seek   IS NULL
          AND last_user_lookup IS NULL 
         )
AND      OBJECTPROPERTY(i.[object_id],         'IsSystemTable'   ) = 0
AND      INDEXPROPERTY (i.[object_id], i.name, 'IsAutoStatistics') = 0
AND      INDEXPROPERTY (i.[object_id], i.name, 'IsHypothetical'  ) = 0
AND      INDEXPROPERTY (i.[object_id], i.name, 'IsStatistics'    ) = 0
AND      INDEXPROPERTY (i.[object_id], i.name, 'IsFulltextKey'   ) = 0
AND      (i.index_id between 2 AND 250 OR (i.index_id=1 AND OBJECTPROPERTY(i.[object_id],'IsView')=1))
AND      o.type != 'IT'

--and OBJECT_SCHEMA_NAME(i.object_id) = 'Price'
ORDER BY 1,2,3

P.S. Прежде чем ринуться удалять индексы, ответьте себе на вопрос о том, как давно вы "чистили" статистику или перезагружали сервер? А все ли операции, запускаемые на вашем инстансе, были запущены после этого?

2 комментария:

  1. Спасибо, очень полезная статья.

    ОтветитьУдалить
  2. Я видел комментарии людей, которые уже получили ссуду от г-на Бенджамина Ли, и я решил подать заявку в соответствии с их рекомендациями, и всего через 5 дней я подтвердил свою ссуду на моем банковском счете на общую сумму 850 000,00 долларов США, которую я запросил. Это действительно отличная новость, и я советую всем, кому нужен настоящий кредитор, подать заявку по электронной почте: 247officedept@gmail.com или WhatsApp: + 1-989-394-3740. Я счастлив, что получил ссуду, о которой просил.

    ОтветитьУдалить