SET STATISTICS IO (Transact-SQL)

使 SQL Server 显示有关由 Transact-SQL 语句生成的磁盘活动量的信息。

主题链接图标 Transact-SQL 语法约定

语法

SET STATISTICS IO { ON | OFF }

注释

如果 STATISTICS IO 为 ON,则显示统计信息。 如果为 OFF,则不显示统计信息。

如果将此选项设置为 ON,则所有后续的 Transact-SQL 语句将返回统计信息,直到将该选项设置为 OFF 为止。

下表列出并说明了各个输出项。

输出项

含义

表的名称。

Scan count

在任何方向都达到叶级别后启动的查询/扫描数,目的在于检索用于构造输出的最终数据集的所有值。

  • 如果使用的索引是主键的唯一索引或聚集索引并且您仅查找一个值,则扫描计数为 0。 例如 WHERE Primary_Key_Column = <value>。

  • 当您使用对非主键列定义的非唯一的聚集索引搜索一个值时,扫描计数为 1。 这是为了针对您正在搜索的键值检查重复值。 例如 WHERE Clustered_Index_Key_Column = <value>。

  • 当 N 为通过使用索引键定位键值后,在叶级别的左侧或右侧启动的不同查找/扫描数时,则扫描计数为 N。

logical reads

从数据缓存读取的页数。

physical reads

从磁盘读取的页数。

read-ahead reads

为进行查询而放入缓存的页数。

lob logical reads

从数据缓存读取的 text、ntext、image 或大值类型 (varchar(max)、nvarchar(max)、varbinary(max)) 页的数目。

lob physical reads

从磁盘读取的 text、ntext、image 或大值类型页的数目。

lob read-ahead reads

为进行查询而放入缓存的 text、ntext、image 或大值类型页的数目。

SET STATISTICS IO 是在执行或运行时设置,而不是在分析时设置。

注意注意

当 Transact-SQL 语句检索 LOB 列时,有些 LOB 检索操作可能需要多次遍历 LOB 树。 这可能会导致 SET STATISTICS IO 报告的次数比预期的逻辑读取次数更高。

权限

若要使用 SET STATISTICS IO,用户必须具有执行 Transact-SQL 语句的适当权限。 但不需要 SHOWPLAN 权限。

示例

此示例显示 SQL Server 处理语句时,进行了多少次逻辑读和物理读操作。

USE AdventureWorks2012;
GO       
SET STATISTICS IO ON;
GO
SELECT * 
FROM Production.ProductCostHistory
WHERE StandardCost < 500.00;
GO
SET STATISTICS IO OFF;
GO

下面是结果集:

Table 'ProductCostHistory'. Scan count 1, logical reads 5, physical 
reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, 
lob read-ahead reads 0.

请参阅

参考

SET 语句 (Transact-SQL)

SET SHOWPLAN_ALL (Transact-SQL)

SET STATISTICS TIME (Transact-SQL)