Подсказки таблицы

Оценить
(0 голоса)

Вы можете применить подсказки таблицы к одной таблице. Поддерживаются следующие подсказки таблицы:

♦ index;

♦ noexpand;

♦ forceseek (новое в SQL Server 2008).

Подсказка index служит для указания одного или более индексов, которые затем будут использованы в запросе. Эта подсказка задается в предложении from в запросе. Вы можете использовать эту подсказку, чтобы осуществить доступ к индексу, если оптимизатор по различным причинам выбрал последовательное сканирование таблицы для данного запроса. (Подсказка index также может быть полезной для того, чтобы не позволить оптимизатору использовать другой конкретный индекс.)

В примерах 20.15 и 20.16 показано использование подсказки index.

Подсказки таблицы

 

Пример 20.15 идентичен примеру 20.8, однако он дополнительно содержит подсказку index. Эта подсказка заставляет оптимизатор запросов использовать индекс i_stateprov. Без этой подсказки оптимизатор выбирает сканирование таблицы, и это вы можете увидеть в результатах вывода в примере 20.8.

Другая форма подсказки для запроса index, index (о), требует, чтобы оптимизатор не использовал никаких существующих индексов. В примере 20.16 показано применение этой подсказки.

 

Подсказки таблицы

 

План выполнения запроса в примере 20.16 показывает, что оптимизатор использует сканирование кластеризованного индекса по причине задания подсказки index (0). Без этой подсказки оптимизатор запросов должен был выбрать сканирование некластеризованного индекса. Вы сами можете это проверить, удалив из запроса эту подсказку.

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

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


Подсказки соединения
Подсказки запроса
Структуры планов
Резюме к оптимизатору запросов
Фазы обработки запроса

Добавить комментарий


Защитный код
Обновить

© 2021 serversql.ru. Все права защищены.