SET STATISTICS IO (Transact-SQL)

適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance

SQL Server で、Transact-SQL ステートメントによって生成される物理と論理の IO アクティビティの量に関する情報が表示されます。 物理 IO はディスク上のデータ ページへのアクセスに関連し、論理 IO はメモリ (データ キャッシュ) 内のデータ ページへのアクセスに関連します。

Transact-SQL 構文表記規則

構文

SET STATISTICS IO { ON | OFF }

出力

次の表は、出力アイテムの一覧とその説明です。

出力アイテム 説明
Table テーブルの名前。
Scan count 出力の最終的なデータセットを構築するすべての値を取得するため、リーフ レベルに達した後で任意の方向に開始されたシークまたはスキャンの数。

使用されているインデックスが主キーの一意なインデックスまたはクラスター化インデックスで、1 つの値のみをシークしている場合、Scan count は 0 になります。 たとえば、「 WHERE Primary_Key_Column = <value> 」のように入力します。
主キーではない列で定義されている一意ではないクラスター化インデックスを使用して 1 つの値を検索する場合、Scan count は 1 になります。 この処理は、検索対象のキー値の重複値を確認するために行われます。 たとえば、WHERE Clustered_Index_Key_Column = <value> のようにします。
N は、インデックス キーを使用してキー値を検索した後、リーフ レベルで左または右側に向かって開始された異なるシークまたはスキャンの数である場合、スキャン数は N です。
logical reads データ キャッシュから読み取られたページ数。
physical reads ディスクから読み取られたページ数。
page server reads ページ サーバーから読み取られたページの数。 **
read-ahead reads 先読みを使用して、クエリによってキャッシュに配置されたページ数。
page server read-ahead reads 先読みを介して、ページ サーバーから読み取られ、クエリによってデータ キャッシュに配置されたページの数。 **
lob logical reads データ キャッシュから読み取られた LOB* ページの数。
lob physical reads ディスクから読み取られた LOB* ページの数。
lob page server reads ページ サーバーから読み取られた LOB* ページの数。 **
lob read-ahead reads 先読みを介して、クエリによってデータ キャッシュに配置された LOB* ページの数。
lob page server read-ahead reads 先読みを介して、ページ サーバーから読み取られ、クエリによってデータ キャッシュに配置された LOB* ページの数。 **

* ラージ オブジェクト バイナリ (LOB) データ型には、 textntextimagevarchar(max)nvarchar(max)varbinary(max)、または列ストア インデックス ページが含まれます。

** Azure SQL Database Hyperscale の場合は 0 以外。

解説

STATISTICS IOが ON の場合は統計情報が表示され、OFF の場合は情報は表示されません。

このオプションを ON に設定した後は、オプションを OFF に設定するまで、すべての Transact-SQL ステートメントで統計情報が返されます。

SET STATISTICS IOの設定は、解析時ではなく実行時に設定されます。

Note

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 76, 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.