sql-server - 了解 SQL Server 查询性能测试 - 输出无法理解

标签 sql-server performance unit-testing

我正在尝试测试在我的项目中运行某些查询所需的时间。我正在 Management Studio 中测试查询。

这是我的代码片段:

SET STATISTICS TIME ON

SET STATISTICS IO ON
EXEC <my stored procedure>

SET STATISTICS IO OFF
SET STATISTICS TIME OFF

我不明白我得到的输出是什么:

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

 SQL Server Execution Times:
   CPU time = 0 ms,  elapsed time = 0 ms.
Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, page server reads 0, read-ahead reads 0, page server read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob page server reads 0, lob read-ahead reads 0, lob page server read-ahead reads 0.
Table 'product_loadtable'. Scan count 1, logical reads 942, physical reads 0, page server reads 0, read-ahead reads 0, page server read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob page server reads 0, lob read-ahead reads 0, lob page server read-ahead reads 0.
Table 'Workfile'. Scan count 0, logical reads 0, physical reads 0, page server reads 0, read-ahead reads 0, page server read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob page server reads 0, lob read-ahead reads 0, lob page server read-ahead reads 0.
Table 'product_option'. Scan count 2, logical reads 26, physical reads 0, page server reads 0, read-ahead reads 0, page server read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob page server reads 0, lob read-ahead reads 0, lob page server read-ahead reads 0.
Table 'product_description'. Scan count 157, logical reads 628, physical reads 0, page server reads 0, read-ahead reads 0, page server read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob page server reads 0, lob read-ahead reads 0, lob page server read-ahead reads 0.
Table 'barsizes'. Scan count 0, logical reads 314, physical reads 0, page server reads 0, read-ahead reads 0, page server read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob page server reads 0, lob read-ahead reads 0, lob page server read-ahead reads 0.
Table 'product_detail'. Scan count 1, logical reads 17, physical reads 0, page server reads 0, read-ahead reads 0, page server read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob page server reads 0, lob read-ahead reads 0, lob page server read-ahead reads 0.
Table 'product'. Scan count 1588, logical reads 6299, physical reads 0, page server reads 0, read-ahead reads 0, page server read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob page server reads 0, lob read-ahead reads 0, lob page server read-ahead reads 0.
Table 'inventory'. Scan count 1, logical reads 24, physical reads 0, page server reads 0, read-ahead reads 0, page server read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob page server reads 0, lob read-ahead reads 0, lob page server read-ahead reads 0.
Table 'option_value'. Scan count 1, logical reads 3, physical reads 0, page server reads 0, read-ahead reads 0, page server read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob page server reads 0, lob read-ahead reads 0, lob page server read-ahead reads 0.

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

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

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

Completion time: 2023-04-21T09:49:57.7878903-04:00

为什么有这么多 SQL 执行时间 - 它们是累加的吗?我可以把所有的时间都变成一个易于阅读的时间吗?我在这里做错了什么吗?

最佳答案

假设 STATISTICS TIME OFF 在批处理开始时,您可能有:

  1. SET STATISTICS IO ON (CPU 时间 = 0 毫秒,运行时间 = 0 毫秒。)
  2. 解析和编译您的程序(CPU 时间 = 21 毫秒,运行时间 = 21 毫秒。)
  3. 过程中的第一个语句(CPU 时间 = 0 毫秒,运行时间 = 0 毫秒。)
  4. 过程中的第二条语句(CPU 时间 = 0 毫秒,运行时间 = 41 毫秒。)
  5. 程序的总持续时间(CPU 时间 = 31 毫秒,运行时间 = 62 毫秒。)
  6. SET STATISTICS IO OFF (CPU 时间 = 0 毫秒,运行时间 = 0 毫秒。)

您可能想使用SET STATISTICS IO, TIME <ON|OFF>相反,删除其中 2 个步骤。

关于sql-server - 了解 SQL Server 查询性能测试 - 输出无法理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76073847/

相关文章:

sql - 强制 SQL Server 删除数据库

sql - 使用 BCP 和隐藏路径从 SQL 导出数据时出错

objective-c - 当我将头文件导入我的单元测试类时,为什么 Xcode 返回错误 "file not found"?

sql-server - 在 SQL 中将 Pascal Case 字符串转换为 "Friendly Name"

java - java中哈希表构造函数的性能

python - 如果满足Python中的标准,则有效地替换元素

c# - Object.GetType() 的性能

java - 模拟 Spring 中许多类中常见的类实例

node.js - 使用 amqplib-mocks 库进行 rabbitMQ 单元测试

SQL - 如何在where子句条件中添加计数