У меня есть два запроса, которые выполняют ту же, умеренно сложную задачу.Один присоединяется к подзапросам, другой использует переменную таблицы.Я хотел бы выполнить тестирование таким образом, чтобы увидеть общее время, затрачиваемое на повторное выполнение.
Однако у меня есть несколько проблем с простым методом, который я нашел в Интернете:
DECLARE variables
SET STATISTICS TIME ON
/* Benchmark query 1 */
/* Benchmark query 2 */
SET STATISTICS TIME OFF
Iрасширен это с помощью WHILE
-loops.
Проблемы:
- Таймер ставит отметку в каждом цикле (выполнении запроса) и каждой подпрограмме ', а не в целом операторе while.
- Временная таблица со строкой, содержащей столбец
UNIQUE
, выдает ошибки со второй итерации вперед, когда я снова вставляю те же элементы. - SSMS показывает каждый набор результатов в окне результатов, котороеэто не точка эталонного теста.
- Большинство периодов времени около 0 мс указывают на то, что происходит некоторое кэширование. (возможно, из-за того, что многие подэтапы запроса табличной переменной былирегистрируется один за другим)
- Переменные, объявленные в запросах, при повторном объявлении выдают ошибку.
Когда я начал изучать бенчмаркинг, я предполагал, что будет простой способизвлекайте запросы из файла несколько раз и время выполнения.Единственной вещью, которую я нашел, был SQLCmd, но это не совсем то, что мне было нужно, я бы предпочел делать все это внутри SSMS.
Итак, возможен ли описанный выше процесс?Если так, что мне нужно?Если нет, то каков стандартный способ сравнения более сложных запросов, чем один SELECT
?
. Любые указатели будут с благодарностью, так как я довольно новичок в этой игре.