【问题标题】:How to retrieve query execution times for previous query如何检索先前查询的查询执行时间
【发布时间】:2014-02-25 21:19:19
【问题描述】:

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

客户端计算机上的日志文件告诉我从应用程序端测量的每个查询的执行时间。看来,对远程数据库的许多基本简单查询都需要花费大量时间才能完成。例如,

SELECT CONVERT(varchar, GETDATE(), 121)

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

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

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

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

谁能帮我弄清楚如何为我的查询获取时间?

【问题讨论】:

    标签: sql sql-server performance timing benchmarking


    【解决方案1】:

    这是一种方式

    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.
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-06
    • 2016-01-13
    • 2011-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多