SET STATISTICS IO (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

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

Transact-SQL 構文表記規則

構文

  
SET STATISTICS IO { ON | OFF }  

Note

SQL Server 2014 (12.x) 以前のバージョンの Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。

解説

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

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

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

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

使用されているインデックスが主キーの一意なインデックスまたはクラスター化インデックスで、1 つの値のみをシークしている場合、Scan count は 0 になります。 たとえば、「 WHERE Primary_Key_Column = <value> 」のように入力します。

主キーではない列で定義されている一意ではないクラスター化インデックスを使用して 1 つの値を検索する場合、Scan count は 1 になります。 この処理は、検索対象のキー値の重複値を確認するために行われます。 たとえば、「 WHERE Clustered_Index_Key_Column = <value> 」のように入力します。

インデックス キーを使用してキー値を特定した後、リーフ レベルで左側または右側に向かって開始された異なるシークまたはスキャンの数が N である場合、Scan count は N になります。
logical reads データ キャッシュから読み取られたページ数。
physical reads ディスクから読み取られたページ数。
read-ahead reads クエリ用のキャッシュに読み取られたページ数。
lob logical reads データ キャッシュから読み取られたページ数。 textntextimagevarchar(max)nvarchar(max)varbinary(max)、または列ストア インデックスのページが含まれます。
lob physical reads ディスクから読み取られたページ数。 textntextimagevarchar(max)nvarchar(max)varbinary(max)、または列ストア インデックスのページが含まれます。
lob read-ahead reads クエリ用のキャッシュに読み取られたページ数。 textntextimagevarchar(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)