Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Последствия при удалении индекса  [new]
CrazyRaver
Member

Откуда:
Сообщений: 25
SQL 2005

Большая база и есть пару индексов - который очень редко используются но занимают очень много места.

Если хранимая процедура закэшировала план запроса с использованием индекса, а потом я его удалю - перекомпилит ли SQL эту процедуру после удаления индекса или надо ручками искать все процедуры и функции с запросами на эту таблицу и руками им делать:

EXECUTE sp_recompile ...

Что скажут спецы? ;)
2 июн 11, 15:20    [10753467]     Ответить | Цитировать Сообщить модератору
 Re: Последствия при удалении индекса  [new]
Prolog
Member

Откуда: Москва
Сообщений: 2793
Перекомпилит при первом же вызове. Но если в процедуру указан явно хинь with(index=), то нужно исправить все процедуры, где есть такой хинт.
2 июн 11, 15:22    [10753498]     Ответить | Цитировать Сообщить модератору
 Re: Последствия при удалении индекса  [new]
CrazyRaver
Member

Откуда:
Сообщений: 25
Явных хинтов с использованием этих индексов нет - проверил запросом через таблицы sysobjects и syscomments
2 июн 11, 15:33    [10753612]     Ответить | Цитировать Сообщить модератору
 Re: Последствия при удалении индекса  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 35387
Блог
CrazyRaver,

Это в хп нет, а в запросах хинты может и имеются.
Сталкивался с такой практикой(

Рекомендую собрать трассу за месяц-другой, а затем принимать решение.
2 июн 11, 15:36    [10753658]     Ответить | Цитировать Сообщить модератору
 Re: Последствия при удалении индекса  [new]
Prolog
Member

Откуда: Москва
Сообщений: 2793
Зачем трассу? Есть dm на статистику использования индексов.
2 июн 11, 15:59    [10753897]     Ответить | Цитировать Сообщить модератору
 Re: Последствия при удалении индекса  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Критик
Это в хп нет, а в запросах хинты может и имеются.
Если такое имеется - шанс это исправить по ходу.
Пройтись по исходникам кто ж мешает. Месяц ждать незачем.
2 июн 11, 16:16    [10754038]     Ответить | Цитировать Сообщить модератору
 Re: Последствия при удалении индекса  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Prolog
Зачем трассу? Есть dm на статистику использования индексов.
А что там запросы видны и откуда они?
А смотреть надо. Главное чтоб сервак работал непрерывно долго (не падал).
2 июн 11, 16:17    [10754052]     Ответить | Цитировать Сообщить модератору
 Re: Последствия при удалении индекса  [new]
CrazyRaver
Member

Откуда:
Сообщений: 25
По исходникам тоже проверят - названия индексов отдал. Я туда не лезу :)
2 июн 11, 16:28    [10754134]     Ответить | Цитировать Сообщить модератору
 Re: Последствия при удалении индекса  [new]
CrazyRaver
Member

Откуда:
Сообщений: 25
Prolog
Зачем трассу? Есть dm на статистику использования индексов.


Вот статистика использования индексов:
2 июн 11, 16:31    [10754180]     Ответить | Цитировать Сообщить модератору
 Re: Последствия при удалении индекса  [new]
CrazyRaver
Member

Откуда:
Сообщений: 25
SELECT
DB_NAME(stat.database_id) AS db_name,
QUOTENAME(o.name) AS tname,
QUOTENAME(i.name) AS iname,
stat.*
FROM sys.dm_db_index_usage_stats stat
JOIN sys.objects o ON o.object_id = stat.object_id
JOIN sys.indexes i ON
i.object_id = stat.object_id
AND i.index_id = stat.index_id
AND i.is_disabled = 0
WHERE
stat.index_id > 0
AND (stat.last_user_seek IS NOT NULL
OR stat.last_user_scan IS NOT NULL
OR stat.last_user_lookup IS NOT NULL)
ORDER BY
DB_NAME(database_id),
QUOTENAME(o.name)

но самих же запросов в ней нет, чтоб текст проверить
2 июн 11, 16:32    [10754186]     Ответить | Цитировать Сообщить модератору
 Re: Последствия при удалении индекса  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
CrazyRaver
SELECT 
    DB_NAME(stat.database_id) AS db_name,
    QUOTENAME(o.name) AS tname, 
    QUOTENAME(i.name) AS iname,
    stat.* 
  FROM sys.dm_db_index_usage_stats stat 
  JOIN sys.objects o ON o.object_id = stat.object_id
  JOIN sys.indexes i ON 
    i.object_id = stat.object_id 
    AND i.index_id = stat.index_id
    AND i.is_disabled = 0
  WHERE 
    stat.index_id > 0
    AND (stat.last_user_seek IS NOT NULL 
      OR stat.last_user_scan IS NOT NULL 
      OR stat.last_user_lookup IS NOT NULL)
  ORDER BY 
    DB_NAME(database_id),
    QUOTENAME(o.name)
но самих же запросов в ней нет, чтоб текст проверить
2 июн 11, 16:42    [10754277]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить