SET STATISTICS IO (Transact-SQL)
适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例
导致 SQL Server 显示 Transact-SQL 语句所生成的物理和逻辑 IO 活动量的相关信息。 物理 IO 与访问磁盘上的数据页相关,逻辑 IO 与访问内存中的数据页(数据缓存)相关。
语法
SET STATISTICS IO { ON | OFF }
注意
若要查看 SQL Server 2014 (12.x) 及更早版本的 Transact-SQL 语法,请参阅早期版本文档。
备注
当 STATISTICS IO 为“开”时,显示统计信息;为“关”时,不显示信息。
如果将此选项设置为“开”,则所有 Transact-SQL 语句均返回统计信息,直至将该选项设置为“关”。
下表列出并说明了各个输出项。
输出项 | 含义 |
---|---|
表 | 表的名称。 |
扫描计数 | 在任意方向到达叶级别之后开始的搜索或扫描次数,搜索/扫描目的是检索所有用于构造输出的最终数据集的值。 如果使用的索引是主键上的唯一索引或聚集索引,且只搜索一个值,则扫描计数为 0。 例如, WHERE Primary_Key_Column = <value> 。当使用对非主键列定义的非唯一的聚集索引搜索一个值时,扫描计数为 1。 此过程的目的是针对你正在搜索的键值检查重复值。 例如, WHERE Clustered_Index_Key_Column = <value> 。当 N 为通过使用索引键定位键值后,在叶级别的左侧或右侧启动的不同查找或扫描数时,则扫描计数为 N。 |
逻辑读取次数 | 从数据缓存读取的页数。 |
物理读取次数 | 从磁盘读取的页数。 |
预读次数 | 为进行查询而放入缓存的页数。 |
lob 逻辑读取次数 | 从数据缓存读取的页数。 包括 text、ntext、image、varchar(max)、nvarchar(max)、varbinary(max) 或列存储索引页。 |
lob 物理读取次数 | 从磁盘读取的页数。 包括 text、ntext、image、varchar(max)、nvarchar(max)、varbinary(max) 或列存储索引页。 |
lob 预读次数 | 为进行查询而放入缓存的页数。 包括 text、ntext、image、varchar(max)、nvarchar(max)、varbinary(max) 或列存储索引页。 |
SET STATISTICS IO 是在执行或运行时设置,而不是在分析时设置。
注意
当 Transact-SQL 语句检索 LOB 列时,有些 LOB 检索操作可能需要多次遍历 LOB 树。 这可能会导致 SET STATISTICS IO 报告的次数比预期的逻辑读取次数更高。
权限
若要使用 SET STATISTICS IO,用户必须具有执行 Transact-SQL 语句的相应权限。 但不需要 SHOWPLAN 权限。
示例
此示例显示 SQL Server 处理语句时,进行了多少次逻辑读和物理读操作。
USE AdventureWorks2022;
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)
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈