Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 как выявить не используемые индексы?  [new]
Машенька23
Guest
Добрый вечер. Есть таблица. В нее идут insert/update'ы. На ней очень много индексов. Как выявить какие из них используются чтобы безопасно их грохнуть?
23 дек 13, 21:44    [15336379]     Ответить | Цитировать Сообщить модератору
 Re: как выявить не используемые индексы?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Что есть для Вас "использование индекса"?
23 дек 13, 22:01    [15336429]     Ответить | Цитировать Сообщить модератору
 Re: как выявить не используемые индексы?  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 34014
Блог
SELECT DatabaseName = DB_NAME(),
       TableName = OBJECT_NAME(s.[object_id]),
       IndexName = i.name,
       user_updates,
       system_updates,
      'alter index [' +OBJECT_SCHEMA_NAME(i.object_id, DB_ID())+ '].['+i.name+'] ON ['+OBJECT_NAME(s.[object_id])+'] DISABLE' as [Disable],
      'exec sp_rename ''['+OBJECT_SCHEMA_NAME(i.object_id, DB_ID())+'].['+OBJECT_NAME(s.[object_id])+'].['+i.name+']'',''disable_'+i.name+''',''INDEX''' as [Rename]
  FROM sys.dm_db_index_usage_stats s 
  INNER JOIN sys.indexes i ON s.object_id = i.object_id and
                              s.index_id  = i.index_id
  WHERE s.database_id = DB_ID() and
        OBJECTPROPERTY(s.[object_id], 'IsMsShipped') = 0 and
        s.user_seeks   = 0 and
        s.user_scans   = 0 and
        s.user_lookups = 0 and
        i.is_disabled  = 0 and
        i.is_unique = 0 and
        i.is_primary_key = 0 and
        i.type_desc <> 'HEAP'
  order by user_updates + system_updates desc
23 дек 13, 22:23    [15336515]     Ответить | Цитировать Сообщить модератору
 Re: как выявить не используемые индексы?  [new]
Crimean
Member

Откуда:
Сообщений: 13148
Критик,

ага. ща они для чистоты эксперимента сервак ребутнут и сразу скрипт отработают :)
23 дек 13, 22:24    [15336518]     Ответить | Цитировать Сообщить модератору
 Re: как выявить не используемые индексы?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Crimean,

Другой вариант. SSIS пакет. Старый. В нем есть шаг DROP INDEX, заливка, потом CREATE INDEX. По sys.dm_db_index_usage_stats индекс не используется. Дропнули...
23 дек 13, 22:32    [15336538]     Ответить | Цитировать Сообщить модератору
 Re: как выявить не используемые индексы?  [new]
Диклевич Александр
Member

Откуда:
Сообщений: 610
pkarklin,

и не только DROP/CREATE.

в 2012 даже REBUILD сбрасывает статистику использования.
24 дек 13, 09:47    [15337579]     Ответить | Цитировать Сообщить модератору
 Re: как выявить не используемые индексы?  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34621
Машенька23
Добрый вечер. Есть таблица. В нее идут insert/update'ы. На ней очень много индексов. Как выявить какие из них используются чтобы безопасно их грохнуть?


очень много - это сколько?
24 дек 13, 14:18    [15339762]     Ответить | Цитировать Сообщить модератору
 Re: как выявить не используемые индексы?  [new]
SFlash
Member

Откуда:
Сообщений: 143
Машенька23
Добрый вечер. Есть таблица. В нее идут insert/update'ы. На ней очень много индексов. Как выявить какие из них используются чтобы безопасно их грохнуть?


select * from sys.dm_db_index_usage_stats , а дальше дело техники
25 дек 13, 14:19    [15345447]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить