SQL Server Query Time Testing - PullRequest
1 голос
/ 10 мая 2011

В SSMS я могу выполнить запрос, выполнение которого занимает некоторое время.Если я снова выполню запрос, он завершится почти мгновенно, что затруднит увидеть улучшение или нет, когда я внесу изменения, такие как добавление нового индекса.

Как люди рассчитывают время, чтобы они могли точно оценить, действительно ли их изменения действительно улучшились или нет?

Обратите внимание, я использую sql server 2005

Ответы [ 2 ]

3 голосов
/ 10 мая 2011

На тестовом / dev-сервере с объемами производственных данных вы должны очистить кэши выполнения и данных, используя следующее:

CHECKPOINT
DBCC DROPCLEANBUFFERS
DBCC FREEPROCCACHE

NB.Не запускайте это на рабочем сервере

Это потому, что после первого выполнения запроса данные будут кэшироваться в ОЗУ и план выполнения будет кэшироваться.Таким образом, для последующих вызовов его можно получить намного быстрее - в основном из-за кеша данных, поскольку гораздо быстрее получить данные из ОЗУ, чем нажать на диски.

Итак, вы бы:1) запустить начальный запрос и записать статистику2) сделать запрос / изменение индекса3) очистить кэш согласно выше4) выполнить запрос и записать новую статистику

Кроме того, простое сравнение планов выполнения до / после изменения даст представление о разнице - например, если вы видите сканирование таблицы, замененное поиском по индексу.

2 голосов
/ 10 мая 2011

Вам следует взглянуть на план выполнения запроса - обратите внимание на сканирование индекса или таблицы, которое вы хотите найти.В SSMS -> Запрос -> Включить фактический план выполнения.Запустите запрос еще раз, и вы увидите результаты на вкладке.

Вы видите, что ваши результаты оптимизируются - что, скорее всего, произойдет и в производстве.Однако вашим запросам, возможно, придется столкнуться и с другими производственными системами, что может время от времени удалять результаты ваших запросов из кэша..aspx

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