计算SQL查询的执行时间?

我在我的网站提供searchfunction,当用户search一个logging,然后我想显示的时间,以获得谷歌所做的相同的结果。 当我们search任何东西,然后谷歌显示需要多less时间才能获得结果?

为此,我在SP中声明了一个@startvariables,并在最后find差异,如下所示:

DECLARE @start_time DATETIME SET @start_time = GETDATE() -- my query SELECT * FROM @search_temp_table SELECT RTRIM(CAST(DATEDIFF(MS, @start_time, GETDATE()) AS CHAR(10))) AS 'TimeTaken' 

有没有其他简单快捷的方法,或者是一个单行的查询,我们可以找出查询执行的时间?

我正在使用SQL Server 2005。

我们从应用程序代码中监控这一点,只是为了包括build立/closures连接以及通过networking传输数据所需的时间。 这是非常简单的…

 昏暗的持续时间作为TimeSpan
 Dim StartTime为DateTime = DateTime.Now

 '在这里调用数据库并执行你的SQL语句

持续时间= DateTime.Now.Subtract(StartTime)
 Console.WriteLine(String.Format(“Query took {0} seconds”,Duration.TotalSeconds.ToString()))
到Console.ReadLine() 

那么,如果你真的想在你的数据库中做到这一点,那么MSDN中提供了更准确的方法:

 SET STATISTICS TIME ON 

您也可以从应用程序中读取这些信息。

我发现这一个更有帮助和简单

 DECLARE @StartTime datetime,@EndTime datetime SELECT @StartTime=GETDATE() --Your Query to be run goes here-- SELECT @EndTime=GETDATE() SELECT DATEDIFF(ms,@StartTime,@EndTime) AS [Duration in milliseconds] 

请用

 -- turn on statistics IO for IO related SET STATISTICS IO ON GO 

并为时间计算使用

 SET STATISTICS TIME ON GO 

那么它会给每个查询的结果。 在查询input窗口附近的消息窗口中。

 declare @sttime datetime set @sttime=getdate() print @sttime Select * from ProductMaster SELECT RTRIM(CAST(DATEDIFF(MS, @sttime, GETDATE()) AS CHAR(10))) AS 'TimeTaken' 

你为什么在SQL中做? 无可否认,这确实显示出“真实”的查询时间,而不是查询时间+在networking上的每个方向上洗刷数据的时间,但是这会污染你的数据库代码。 我怀疑你的用户是否会关心 – 事实上,他们可能更愿意包括networking时间,因为这一切都有助于他们浏览页面的时间。

为什么不在你的web应用程序代码中进行计时? 除此之外,这意味着,如果你不想做任何时机,但是你想执行相同的过程,你不需要搞乱你不需要的东西。

您可以使用

 SET STATISTICS TIME { ON | OFF } 

显示parsing,编译和执行每个语句所需的毫秒数

当SET STATISTICS TIME为ON时,将显示一条语句的时间统计信息。 closures时,不显示时间统计信息

 USE AdventureWorks2012; GO SET STATISTICS TIME ON; GO SELECT ProductID, StartDate, EndDate, StandardCost FROM Production.ProductCostHistory WHERE StandardCost < 500.00; GO SET STATISTICS TIME OFF; GO 

尝试这个

 DECLARE @StartTime DATETIME SET @StartTime = GETDATE() SET @EndTime = GETDATE() PRINT 'StartTime = ' + CONVERT(VARCHAR(30),@StartTime,121) PRINT ' EndTime = ' + CONVERT(VARCHAR(30),@EndTime,121) PRINT ' Duration = ' + CONVERT(VARCHAR(30),@EndTime -@starttime,114) 

如果没有这样做,那就试试SET STATISTICS TIME ON