【问题标题】:SSMS Set Statistics Time On/Off prints multiple lines instead of just oneSSMS Set Statistics Time On/Off 打印多行而不是仅一行
【发布时间】:2020-04-19 02:20:11
【问题描述】:

当我运行查询时,它会打印多个执行时间,而不仅仅是一个。我只想要一个,那么我需要做什么才能让它只打印一个时间戳?

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

【问题讨论】:

    标签: sql ssms ssms-2012


    【解决方案1】:

    如果您从代码中删除 PRINT 'Answer = ' + CONVERT(VARCHAR, @evenSum) 那么它不会打印多个执行时间。

    这是它的example

    【讨论】:

    • 那你建议我把 PRINT 语句放在哪里呢?或者既然我必须使用 PRINT 语句,我应该使用其他东西来返回执行时间吗?
    • 使用print 语句将打印多个执行时间。这就是它的工作原理。
    • 在这种情况下计算执行时间的下一个最佳方法是什么?
    【解决方案2】:

    每次执行都会打印统计时间。由于您正在循环执行多个查询语句(我相信这也适用于集合 - 我可能是错误的),每个都将提供一个执行时间。对于我认为你正在寻找的东西,真的没有办法修改统计时间。

    您可以使用 SysDateTime 声明一个 datetime2 并将开始时间存储在开头,并在完成时获取结束时间,从而使用 DateDiff 将差异打印到屏幕上。 (这将实现您的要求。)

    您还可以查看客户统计信息(但这可能不是您想要的)。

    旁注且无关紧要:您正在循环查询。这并不精通,您可能正在这样做来学习。我建议查看 Tally 表以替换循环。如果您正确设计查询,您可以大大提高性能。

    【讨论】:

    • 好的,谢谢。我知道我可以做到这一点,但我希望我可以使用更简单的东西。是的,我正在用它来学习。
    猜你喜欢
    • 2014-11-01
    • 2011-06-27
    • 1970-01-01
    • 1970-01-01
    • 2023-01-27
    • 2022-10-06
    • 1970-01-01
    • 1970-01-01
    • 2011-03-26
    相关资源
    最近更新 更多