SET STATISTICS IO (Transact-SQL)
適用対象: SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL Server で、Transact-SQL ステートメントによって生成される物理と論理の IO アクティビティの量に関する情報が表示されます。 物理 IO はディスク上のデータ ページへのアクセスに関連し、論理 IO はメモリ (データ キャッシュ) 内のデータ ページへのアクセスに関連します。
構文
SET STATISTICS IO { ON | OFF }
Note
SQL Server 2014 (12.x) 以前のバージョンの 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 は、インデックス キーを使用してキー値を検索した後、リーフ レベルで左または右側に向かって開始された異なるシークまたはスキャンの数である場合、スキャン数は 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) データ型には、 text、 ntext、 image、 varchar(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.