我有2个SQL查询。第二个是第一个的修改版本,它们之间的差别很小。
我想知道两个sqls的执行时间,所以我给了
- 查询1
set statistics time on
Select...
.........
set statistics time off
--Result
(2 row(s) affected)
SQL Server Execution Times:
CPU time = 0 ms, elapsed time = 39 ms.
- 查询2
set statistics time on
Select...
.........
set statistics time off
--Result
(2 row(s) affected)
SQL Server Execution Times:
CPU time = 0 ms, elapsed time = 0 ms.
对于第二个查询,经过的时间是0毫秒,它应该是第一个sql的执行时间周围的一些。它给出了0 ms,因为我在[查询2]之前执行了[查询1]。 如何查看第二次查询的已用时间,我应该删除统计信息还是其他任何内容?
答案 0 :(得分:3)
sys.dm_exec_query_stats
中的last_execution_time
列将包含这些信息。此外,它还可以捕获为SQL事件探查器中SQL:StmtCompleted
事件的Duration
列。
话虽如此,有更多方法可以比较查询,而不仅仅是时间。记住逻辑读取,IO和等待统计数据。我建议您阅读How to analyse SQL Server performance,了解有关如何衡量,衡量什么以及如何比较查询的详细信息。