Различия между оценочными и фактическими планами выполнения

8

Я новичок в SQL Server и хочу настроить свой первый запрос.

В SQL Server 20xx, в чем разница между «отображать примерный план выполнения» и «включать фактический план выполнения»?


источник

Ответы:

6

Оценивается выполнение плана генерируется исключительно на основе статистических данных, SQL Server имеет - без фактического выполнения запроса. Оптимизатору запросов просто задают вопрос, что он, скорее всего, будет делать с этим запросом, основываясь на всей информации, которая имеется в запросе, распределениях данных и т. Д.

Это работает нормально, запрос не должен выполняться (что может занять много времени), но если статистика устарела, план может быть сильно искажен.

Фактический план выполнения только что : - фактическое выполнение плана , который был использован при фактическом выполнении запроса. Это покажет вам вещи, которые могут указывать на «устаревшую» статистику и т. Д. Но чтобы получить это, вы должны выполнить запрос - что может занять много времени.

marc_s
источник
1
Я бы подумал, что единственный реальный вопрос здесь - в каких случаях фактический план не является оценочным. Остальное очевидно, не правда ли?
Джон
один быстрый вопрос после прохождения через оптимизатор запросов и при выполнении запроса, если кэшированный план устарел, будет ли шаг оптимизации запроса повторно выполнять обновление статистики? или есть другой способ создать план выполнения?
brykneval
1

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

Фактический план показывает, что на самом деле произошло, когда сервер выполнил запрос. Он включает в себя такие детали, как фактическое количество строк в таблице, сколько памяти он использовал, если была сортировка. Какую степень параллелизма он использовал во время выполнения.

Но лучше всего было бы взглянуть на разницу между «предполагаемым количеством строк» ​​и «фактическим количеством строк», которое вы можете увидеть в фактическом плане exec. Ближе эти два значения означают, что статистика актуальна, и для данной статистики это лучший план. Но если эти значения имеют много различий, то может быть возможно, что статистика не актуальна, и, следовательно, это не может быть лучший план. В этом случае обновление статистики поможет в создании более точного плана и, следовательно, фактического плана.

Гулли Мил
источник