【问题标题】:SQL query performance statistics messages returned multiple timesSQL查询性能统计消息多次返回
【发布时间】:2016-03-10 09:57:45
【问题描述】:

我在 SQL Server 管理工作室上运行此查询 1,看到它返回了 3 条消息,但当内部存储过程有近 10 到 20 条来自统计信息的消息时也是如此。发生了什么,为什么我会看到它们?

SET STATISTICS IO,TIME ON;
GO
    SELECT [UserId]
         ,[UserType]
         ,[CreateDT]
         ,[EffectiveDT]
       FROM [dbo].[People] ORDER BY [UserId]
SET STATISTICS IO,TIME OFF;
GO

我收到的消息如下

SQL Server parse and compile time: 
   CPU time = 0 ms, elapsed time = 0 ms.
SQL Server parse and compile time: 
   CPU time = 0 ms, elapsed time = 0 ms.

 SQL Server Execution Times:
   CPU time = 0 ms,  elapsed time = 0 ms.

 SQL Server Execution Times:
   CPU time = 0 ms,  elapsed time = 0 ms.

 SQL Server Execution Times:
   CPU time = 0 ms,  elapsed time = 0 ms.
Table 'People'. Scan count 1, logical reads 155, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

 SQL Server Execution Times:
   CPU time = 0 ms,  elapsed time = 143 ms.

 SQL Server Execution Times:
   CPU time = 0 ms,  elapsed time = 0 ms.

 SQL Server Execution Times:
   CPU time = 0 ms,  elapsed time = 0 ms.

 SQL Server Execution Times:
   CPU time = 0 ms,  elapsed time = 0 ms.

 SQL Server Execution Times:
   CPU time = 0 ms,  elapsed time = 0 ms.

 SQL Server Execution Times:
   CPU time = 0 ms,  elapsed time = 0 ms.

 SQL Server Execution Times:
   CPU time = 0 ms,  elapsed time = 0 ms.

 SQL Server Execution Times:
   CPU time = 0 ms,  elapsed time = 143 ms.

查询的总耗时是 143ms + 143ms 吗?

【问题讨论】:

    标签: sql sql-server query-performance


    【解决方案1】:

    见下文

    set statistics time on
    select * from test
    set statistics time off
    

    输出:

    SQL Server Execution Times:
       CPU time = 0 ms,  elapsed time = 264 ms..
    

    现在添加打印语句和一些变量

    set statistics time on
    
    print' statistics time '
    declare @a int
    set @a =1
    
    select * from test
    set statistics time off
    

    输出:

    SQL Server Execution Times:
       CPU time = 0 ms,  elapsed time = 1 ms.
    
    SQL Server Execution Times:
       CPU time = 0 ms,  elapsed time = 1 ms.
    
    (59 row(s) affected)
    
    (1 row(s) affected)
    
    SQL Server Execution Times:
       CPU time = 0 ms,  elapsed time = 264 ms.
    

    上面这段代码的总执行时间是1+1+264。

    希望这有助于它的工作原理

    【讨论】:

    • 这是否意味着在您的情况下执行查询所花费的总时间是 1 + 1 + 264
    猜你喜欢
    • 2022-06-16
    • 2015-06-01
    • 1970-01-01
    • 2017-06-02
    • 2021-05-26
    • 1970-01-01
    • 1970-01-01
    • 2012-08-17
    • 1970-01-01
    相关资源
    最近更新 更多