У меня есть 2 хранимые процедуры, где вторая хранимая процедура является улучшением первой.
Я пытаюсь точно определить, насколько это улучшение.
1 / Измерение clock time
не представляется возможным, поскольку я получаю разное время выполнения. Хуже того, иногда (редко, но бывает) время выполнения второй хранимой процедуры больше, чем время выполнения первой процедуры (я полагаю, из-за нагрузки сервера в этот момент).
2 / Include client statistics
также дает разные результаты.
3 / DBCC DROPCLEANBUFFERS
, DBCC FREEPROCCACHE
это хорошо, но та же история ...
4 / SET STATISTICS IO ON
может быть вариантом, но как я могу получить общий балл, так как в моих хранимых процедурах задействовано много таблиц?
5 / также Include actual execution plan
может быть вариантом. Я получаю estimated subtreecost
0,3253 для первой хранимой процедуры и 0,3079 для второй. Можно ли сказать, что вторая хранимая процедура быстрее на 6% (= 0,3253 / 0,3079)?
6 / Использование поля «Чтения» из SQL Server Profiler?
Итак, как я могу сказать, что вторая хранимая процедура на x% быстрее, чем первая процедура, независимо от условий выполнения (рабочей нагрузки сервера, сервера, на котором выполняются эти хранимые процедуры и т. Д.)?
Если это невозможно, как я могу доказать, что вторая хранимая процедура имеет лучшее время выполнения, чем первая хранимая процедура?