SSMS 设置统计时间 On/Off 打印多行而不是一行
SSMS Set Statistics Time On/Off prints multiple lines instead of just one
当我 运行 我的查询时,它会打印多个执行时间而不是一个。我只想要一个那么我需要做什么才能让它只打印一个时间戳?
SET STATISTICS TIME ON
DECLARE @firstNum INT, @secondNum INT, @thirdNum INT, @evenSum INT
SET @firstNum = 1
SET @secondNum = 2
set @thirdNum = 2
SET @evenSum = 2
WHILE (@thirdNum <= 4000000)
BEGIN
SET @thirdNum = @firstNum + @secondNum
SET @firstNum = @secondNum
SET @secondNum = @thirdNum
IF (@thirdNum % 2) = 0
SET @evenSum += @thirdNum
END
PRINT 'Answer = ' + CONVERT(VARCHAR, @evenSum)
SET STATISTICS TIME OFF
如果您从代码中删除 PRINT 'Answer = ' + CONVERT(VARCHAR, @evenSum)
那么它不会打印多个执行时间。
这是它的。
每次执行都会打印统计时间。由于您正在循环,因此您正在执行多个查询语句(我相信这也适用于集合 - 虽然我可能是错误的),每个查询语句都会提供一个执行时间。对于我认为您正在寻找的内容,确实没有办法修改统计时间。
您可以声明一个 datetime2 并使用 SysDateTime 将开始时间存储在开始时间,并在完成时获取结束时间,从而使用 DateDiff 将差异打印到屏幕上。 (这将实现您的要求。)
您还可以查看客户统计信息(但这可能不是您想要的)。
旁注和无关紧要:您正在循环查询。这不是精通,你可能这样做是为了学习。我建议查看 Tally 表以替换循环。如果您正确设计查询,您可以大大提高性能。
当我 运行 我的查询时,它会打印多个执行时间而不是一个。我只想要一个那么我需要做什么才能让它只打印一个时间戳?
SET STATISTICS TIME ON
DECLARE @firstNum INT, @secondNum INT, @thirdNum INT, @evenSum INT
SET @firstNum = 1
SET @secondNum = 2
set @thirdNum = 2
SET @evenSum = 2
WHILE (@thirdNum <= 4000000)
BEGIN
SET @thirdNum = @firstNum + @secondNum
SET @firstNum = @secondNum
SET @secondNum = @thirdNum
IF (@thirdNum % 2) = 0
SET @evenSum += @thirdNum
END
PRINT 'Answer = ' + CONVERT(VARCHAR, @evenSum)
SET STATISTICS TIME OFF
如果您从代码中删除 PRINT 'Answer = ' + CONVERT(VARCHAR, @evenSum)
那么它不会打印多个执行时间。
这是它的
每次执行都会打印统计时间。由于您正在循环,因此您正在执行多个查询语句(我相信这也适用于集合 - 虽然我可能是错误的),每个查询语句都会提供一个执行时间。对于我认为您正在寻找的内容,确实没有办法修改统计时间。
您可以声明一个 datetime2 并使用 SysDateTime 将开始时间存储在开始时间,并在完成时获取结束时间,从而使用 DateDiff 将差异打印到屏幕上。 (这将实现您的要求。)
您还可以查看客户统计信息(但这可能不是您想要的)。
旁注和无关紧要:您正在循环查询。这不是精通,你可能这样做是为了学习。我建议查看 Tally 表以替换循环。如果您正确设计查询,您可以大大提高性能。