我有两个使用SqlServer 2005的t-sql查询。我如何测量每个程序运行所需的时间?
用我的秒表也不行。
发布于 2012-07-27 02:00:28
测量事件之间的“已用时间”的一种简单方法是只获取当前日期和时间。
在SQL Server Management Studio中
SELECT GETDATE();
SELECT /* query one */ 1 ;
SELECT GETDATE();
SELECT /* query two */ 2 ;
SELECT GETDATE();
要计算运行时间,您可以将这些日期值提取到变量中,并使用DATEDIFF函数:
DECLARE @t1 DATETIME;
DECLARE @t2 DATETIME;
SET @t1 = GETDATE();
SELECT /* query one */ 1 ;
SET @t2 = GETDATE();
SELECT DATEDIFF(millisecond,@t1,@t2) AS elapsed_ms;
SET @t1 = GETDATE();
SELECT /* query two */ 2 ;
SET @t2 = GETDATE();
SELECT DATEDIFF(millisecond,@t1,@t2) AS elapsed_ms;
这只是一种方法。您还可以使用SQL事件探查器获取查询的运行时间。
发布于 2013-09-24 14:38:06
DECLARE @StartTime datetime
DECLARE @EndTime datetime
SELECT @StartTime=GETDATE()
-- Write Your Query
SELECT @EndTime=GETDATE()
--This will return execution time of your query
SELECT DATEDIFF(MS,@StartTime,@EndTime) AS [Duration in millisecs]
发布于 2016-06-29 03:05:19
更好的是,这将测量查询的n次迭代的平均值!非常适合更准确的读数。
declare @tTOTAL int = 0
declare @i integer = 0
declare @itrs integer = 100
while @i < @itrs
begin
declare @t0 datetime = GETDATE()
--your query here
declare @t1 datetime = GETDATE()
set @tTotal = @tTotal + DATEDIFF(MICROSECOND,@t0,@t1)
set @i = @i + 1
end
select @tTotal/@itrs
https://stackoverflow.com/questions/11675077
复制相似问题