Каков наилучший способ сравнить 2 варианта SQL-запроса на производительность? - PullRequest
5 голосов
/ 22 марта 2011

У меня есть БД SQL 2005, работающая в виртуальной среде.

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

Обычно я запускаю локальную БД, загружаю некоторые данные и использую время для сравнения одного варианта с другими вариантами.

Но в этом случае, поскольку БД велика и является тестовой коробкой, клиент разместил ее на хосте, который также обслуживает другие ВМ.

БД слишком большая, чтобы ее можно было разгрузитьлокально, так что это не так (по крайней мере, пока).

Но моя главная проблема заключается в том, что когда я запускаю запросы к серверу, время повсеместно.Я могу выполнить + точный + один и тот же запрос 4 раза и получить время 7 секунд, 8 минут, 3: 45 минут и 15 минут.

Моей первой мыслью было использование SET STATISTICS IO ON.

Но этов основном дает статистику чтения и записи для таблиц, являющихся запросами, которые, в зависимости от изменений в запросах (временные таблицы, против представлений, против объединений и т. д.), не могут быть точно сопоставлены, кроме как в совокупности.

Затем я включил SET STATISTICS TIME ON и просто использовал процессорное время, но это, кажется, сбрасывает со счетов все операции ввода-вывода, что также не обеспечивает хорошей базовой линии.

Мой вопрос - есть ли другие?метод статистики или анализа производительности, который может быть полезен в такой ситуации?

1 Ответ

1 голос
/ 22 марта 2011

Информация о статистике ввода-вывода все еще будет полезна. Вы можете увидеть значительно различающиеся числа операций чтения, записи и сканирования, которые позволят понять, какой запрос лучше.

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

И вы также можете использовать SET SHOWPLAN_TEXT, SET SHOWPLAN_ALL или SET SHOWPLAN_XML, чтобы включить план выполнения для просмотра текстового отображения плана.

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

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