如何检索先前查询的查询执行时间

时间:2014-02-25 21:19:19

标签: sql sql-server performance timing benchmarking

我正在尝试诊断客户端站点上的缓慢应用程序性能。

客户端计算机上的日志文件告诉我从应用程序端测量的每个查询的执行时间。对远程数据库的许多简单查询似乎花费了过多的时间来完成。例如,

SELECT CONVERT(varchar, GETDATE(), 121)

此查询重复花费5秒钟来执行应用程序的计时。其他查询几乎一样简单(将一个记录集插入一个表)需要一分钟才能完成。在我的测试系统上(带有客户端数据库的副本),我没有遇到任何这些问题。

我怀疑网络速度慢,除了从Crystal Reports运行报告后问题可靠地消失。然后1-2小时后应用程序再次减速。

为了进一步隔离问题,我想检索/记录服务器端的执行时间。我想弄清楚这样做的最佳方法是什么。我可以使用变量来获取单个查询的执行时间,但我没有选择修改应用程序中的每个查询。

sys.dm_exec_query_stats看起来非常有希望检索先前查询的执行时间,但它为last_elapsed_time报告的毫秒值似乎太高了。

任何人都可以帮我弄清楚如何获取查询的时间安排吗?

1 个答案:

答案 0 :(得分:2)

这是一种方式

set statistics time on
SELECT CONVERT(varchar, GETDATE(), 121)
set statistics time off

它会将查询的时间花费报告为

SQL Server parse and compile time: 
   CPU time = 0 ms, elapsed time = 0 ms.