Обзор плана выполнения

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure

Чтобы иметь возможность выполнять запросы, sql Server ядро СУБД должен проанализировать инструкцию, чтобы определить эффективный способ доступа к необходимым данным и обработать его. Этот анализ обрабатывается компонентом, который называется оптимизатором запросов. Входные данные оптимизатора запросов включают сам запрос, схему базы данных (определения таблиц и индексов) и статистику базы данных. Оптимизатор запросов создает один или несколько планов выполнения запросов, иногда называются планами выполнения запросов или планами выполнения. Оптимизатор запросов выбирает план запроса с помощью набора эвристики для балансировки времени компиляции и оптимальности плана для поиска хорошего плана запроса.

Совет

Дополнительные сведения о планах обработки запросов и выполнения запросов см. в разделах , посвященных оптимизации инструкций SELECT и кэшированию планов выполнения и повторному использованию руководства по архитектуре обработки запросов.

Сведения о просмотре планов выполнения в SQL Server Management Studio и Azure Data Studio см. в статье "Отображение и сохранение планов выполнения".

План выполнения запроса — это определение:

  • Последовательности, в которой происходит обращение к исходным таблицам.

    Как правило, существует много последовательностей, в которых сервер базы данных может обращаться к базовым таблицам для построения результирующего набора. Например, если инструкция SELECT ссылается на три таблицы, сервер базы данных сначала может обратиться к TableA, использовать данные из TableA для извлечения соответствующих строк из TableB, а затем использовать данные из TableB для извлечения данных из TableC. Другие последовательности, в которых сервер базы данных может обращаться к таблицам:
    TableC, TableB, TableAили
    TableB, TableA, TableCили
    TableB, TableC, TableAили
    TableC, , TableATableB

  • Методы, используемые для извлечения данных из каждой таблицы.

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

  • Методы, используемые для вычислений, а также фильтрации, статистической обработки и сортировки данных из каждой таблицы.

    По мере доступа к данным из таблиц можно разными способами выполнять вычисления над данными (например, вычисления скалярных значений), а также статистическую обработку и сортировку данных, как определено в тексте запроса (например, при использовании предложения GROUP BY или ORDER BY) и их фильтрацию (например, при использовании предложения WHERE или HAVING).