Существует "лучшая практика", которую вы должны запустить
DBCC FREESESSIONCACHE
DBCC FREEPROCCACHE
DBCC DROPCLEANBUFFERS
Перед выполнением анализа производительности SQL-запроса.
Однако, например, более поздний DROPCLEANBUFFERS:
Используйте DBCC DROPCLEANBUFFERS для проверки запросов с холодным кешем буфера без выключения и перезапуска сервера.
Чтобы удалить чистые буферы из пула буферов, сначала используйте CHECKPOINT для создать холодный буферный кеш. Это заставляет все грязные страницы текущую базу данных, которая должна быть записана на диск и очищает буферы. После вы делаете это, вы можете выдать команду DBCC DROPCLEANBUFFERS, чтобы удалить все буферов из пула буферов.
Я думаю, это означает, что вы будете тестировать свой запрос, как если бы это был первый запрос, который был запущен на сервере, поэтому фактическое "реальное" влияние запроса будет ниже.
Действительно ли целесообразно запускать три команды, чтобы узнать стоимость запроса или заставить вас получить довольно эмпирические результаты, которые не имеют близкого отношения к реальному времени запроса в живой среде?