计算SQL查询的执行时间?
我在我的网站上提供搜索功能,当用户搜索一条记录时,我想显示查询的时间,以获得与谷歌相同的结果。当我们搜索任何东西,然后谷歌显示需要多少时间才能获得结果?计算SQL查询的执行时间?
为此,我在SP中声明了一个@start变量,并在最后找到了差异,如下所示;
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.
我们从应用程序代码中监控这一点,只是为了包括建立/关闭连接以及通过网络传输数据所需的时间。这是非常直接的...
Dim Duration as TimeSpan Dim StartTime as DateTime = DateTime.Now 'Call the database here and execute your SQL statement Duration = DateTime.Now.Subtract(StartTime) Console.WriteLine(String.Format("Query took {0} seconds", Duration.TotalSeconds.ToString())) Console.ReadLine()
为什么要在SQL中执行此操作?无可否认,这确实表现出“真实”的查询时间,而不是查询时间+在网络上每次刷新数据所花费的时间,但这会污染数据库代码。我怀疑你的用户是否会关心 - 事实上,他们可能会包含网络时间而不是,因为它们都会影响他们查看页面的时间。
为什么不在您的Web应用程序代码中进行计时?除了其他任何东西,这意味着,如果你的不是想要做任何计时,但你想执行相同的过程,你不需要搞乱你不需要的东西。
虽然连接+查询+网络传输的总时间是非常实用的,我宁愿排除网络传输时间,因为外部搜索引擎这么多的因素可以影响它。我也喜欢查询返回性能元数据的想法,因此应用程序可以监控自己。这将允许应用程序在负载较高时自动排除或替换查询,或者在产生总和的查询(例如,随着目标表大小增长而开始定期超过某个阈值)时警告开发人员。 – Triynko 2013-04-10 16:45:10
此外,当您添加增量功能时,查询的额外开销可能可以忽略不计,而查询时间本身可能不会。例如,我想用一个新的和查询向我的Flash客户端发送一个额外的整数,因此开销可以忽略不计(即*现有*数据流只增加4或5个字节,并且数据库连接已经打开其他检索的数据),而查询执行时间可能很重要。 – Triynko 2013-04-10 16:49:32
declare @sttime datetime
set @sttime=getdate()
print @sttime
Select * from ProductMaster
SELECT RTRIM(CAST(DATEDIFF(MS, @sttime, GETDATE()) AS CHAR(10))) AS 'TimeTaken'
请使用
-- turn on statistics IO for IO related
SET STATISTICS IO ON
GO
和时间计算使用
SET STATISTICS TIME ON
GO
然后它会给结果为每个查询。在查询输入窗口附近的消息窗口中。
我发现这是更多的帮助和简单
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]
试试这个
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 [email protected],114)
如果不这样做,那么试试SET STATISTICS TIME ON
您可以使用
SET STATISTICS TIME { ON | OFF }
显示解析,编译和执行每条语句所需的毫秒数
当SET STATISTICS TIME为ON时,将显示语句的时间统计信息。当OFF,时间统计信息并不显示
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
为此,必须使用System.Diagnostics.StopWatch。 – naveen 2012-01-03 04:43:14
我倒推了你的anwser,因为它没有回答实际的问题。很好,你已经使用VB解决了它,但考虑将faiz的答案标记为正确的答案 – 2014-07-04 09:30:15