SQL Server Query быстрее в SSMS, если включить план выполнения - PullRequest
2 голосов
/ 22 октября 2010

В студии управления SQL Server 2005 я тестирую запрос, в котором используются некоторые переменные таблицы, одна из которых имеет кластеризованное уникальное ограничение. Я замечаю, что общее время выполнения на самом деле значительно уменьшается, когда я включаю фактический план выполнения для его анализа.

В чем причина этого, и я должен проверять только общее время выполнения, когда опция включения плана выполнения отключена.

Спасибо!

Ответы [ 2 ]

3 голосов
/ 22 октября 2010

Звучит немного странно для меня. Вы уверены, что разница не в кешировании? Я всегда проверял бы производительность sproc, НЕ включая план выполнения, и я очищал бы кэш перед каждым запуском, чтобы иметь справедливое сравнение (на сервере db test / dev, а не на производстве).

DBCC FREEPROCCACHE -- will clear the execution plan cache
DBCC DROPCLEANBUFFERS -- will clear the data cache
0 голосов
/ 16 мая 2017

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

timings

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