Определите, был ли индекс использован в качестве подсказки - PullRequest
2 голосов
/ 27 мая 2010

В SQL Server есть возможность использовать подсказки запросов. например,

SELECT c.ContactID
FROM Person.Contact c
WITH (INDEX(AK_Contact_rowguid))

Я нахожусь в процессе избавления от неиспользуемых индексов, и мне было интересно, как я могу определить, использовался ли индекс как подсказка запроса. У кого-нибудь есть предложения, как мне это сделать?

Cheers, Джо

Ответы [ 2 ]

1 голос
/ 27 мая 2010

Вы можете запустить профилировщик только для клиентского SQL или выполнить поиск sys.sql_modules в противном случае.

Чтобы найти неиспользуемые индексы, вы обычно используете что-то на основе dmvs . Это покажет вам, какие индексы используются и должны храниться.

0 голосов
/ 27 мая 2010

Это отличный вопрос, и я не думаю, что смогу дать вам простой ответ. Если бы это был я, я написал бы всю базу данных в Management Studio и выполнил бы текстовый поиск по имени индекса. Я также сделал бы это во всех моих отчетах и ​​исходном коде, просто чтобы быть уверенным, тоже.

Я не думаю, что подсказки попадают в sys.dependencies для функций и функций, но даже если бы они это сделали, у вас был бы некоторый специальный SQL, с которым можно было бы иметь дело, поэтому я бы использовал маршрут поиска текста.

...