Как включение подсказки индекса SQL влияет на производительность запросов? - PullRequest
5 голосов
/ 23 сентября 2008

Скажем, у меня есть таблица в базе данных SQL 2005 с более чем 2 000 000 записей и несколькими индексами. В чем преимущество использования подсказок индекса в моих запросах? Есть ли недостатки в использовании подсказок индекса в запросах?

Ответы [ 4 ]

3 голосов
/ 23 сентября 2008

Ключевой момент, на который, как я полагаю, все здесь указывают, заключается в том, что при ОЧЕНЬ тщательном рассмотрении использование подсказок индекса может улучшить производительность ваших запросов, ЕСЛИ И ТОЛЬКО ЕСЛИ существует несколько индексов, которые можно использовать для получения данных, И если SQL Server не использует правильный.

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

3 голосов
/ 23 сентября 2008

Во-первых, попробуйте с помощью SQL Profiler создать файл активности .trc в вашей базе данных для нормальной рабочей нагрузки в течение нескольких часов. А затем используйте «Помощник по настройке ядра СУБД» в меню «Инструменты» SQL Server Management Studio, чтобы узнать, предлагает ли он какие-либо дополнительные индексы, составные индексы или охватывающие индексы, которые могут быть полезны.

Я никогда не использую подсказки запросов и в основном работаю с многомиллионными базами данных строк. Иногда они могут негативно повлиять на производительность.

2 голосов
/ 23 сентября 2008

Подсказка индекса вступит в действие только тогда, когда ваш запрос включает в себя объединение таблиц, и когда столбцы, используемые для объединения с другой таблицей, соответствуют нескольким индексам. В этом случае ядро ​​базы данных может выбрать один индекс для объединения, и из исследования вы можете узнать, что если он использует другой индекс, запрос будет работать лучше. В этом случае вы предоставляете подсказку индекса, сообщающую механизму базы данных, какой индекс использовать.

1 голос
/ 23 сентября 2008

Мой опыт показывает, что иногда вы знаете больше о своем наборе данных, чем SQL Server. В этом случае вы должны использовать подсказки запроса. Другими словами: вы помогаете оптимизатору принять решение.

Однажды я создал хранилище данных, в котором SQL Server не использовал оптимальный индекс для сложного запроса. Путем указания индекса в моем запросе мне удалось сделать запрос примерно в 100 раз быстрее.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...