SET STATISTICS XML (Transact-SQL)
Microsoft SQL Server で Transact-SQL ステートメントを実行し、ステートメントの実行方法に関する詳細情報をウェルフォームド XML ドキュメント形式で生成します。
構文
SET STATISTICS XML { ON | OFF }
説明
SET STATISTICS XML は、解析時ではなく実行時に設定されます。
SET STATISTICS XML が ON の場合、SQL Server では各ステートメントの実行に関する情報がステートメントの実行後に返されます。返される情報は、このオプションが ON に設定されてから OFF に設定されるまでに実行されたすべての Transact-SQL ステートメントに関する情報です。SET STATISTICS XML 以外のステートメントを同時にバッチで実行することもできます。
SET STATISTICS XML では、sqlcmd ユーティリティなどのアプリケーション用に、出力が nvarchar(max) で返されます。この XML 出力は、他のツールがクエリ プランの情報の表示や処理を行う場合に使用されます。
SET STATISTICS XML では、情報が XML ドキュメントのセットとして返されます。SET STATISTICS XML を ON にした後に実行された各ステートメントの情報は、それぞれ 1 つの出力ドキュメントに反映されます。それぞれのドキュメントには、ステートメントのテキストと、実行ステップの詳細が含まれます。この出力では、コスト、アクセスしたインデックス、実行された操作の種類、結合順序、物理操作が実行された回数、それぞれの物理操作で作成された行の数など、実行時の情報が示されます。
SET STATISTICS XML による XML 出力用の XML スキーマを含んだドキュメントは、セットアップ時に、Microsoft SQL Server がインストールされているコンピューター上のローカル ディレクトリへコピーされます。このドキュメントは、SQL Server のインストール ファイルと同じドライブ上にあります。場所は次のとおりです。
\Microsoft SQL Server\100\Tools\Binn\schemas\sqlserver\2004\07\showplan\showplanxml.xsd
プラン表示スキーマは、Web サイトにもあります。
SET STATISTICS PROFILE と SET STATISTICS XML は、同時に使用できません。SET STATISTICS PROFILE ではテキスト形式の出力が生成され、SET STATISTICS XML では XML 形式の出力が生成されます。将来の SQL Server では、新しいクエリ実行プランの情報は STATISTICS XML ステートメントでのみ表示され、SET STATISTICS PROFILE ステートメントでは表示されなくなります。
注 |
---|
SQL Server Management Studio で [実際の実行プランを含める] をクリックすると、この SET オプションでは XML プラン表示出力が生成されません。SET オプションを使用するには、[実際の実行プランを含める] をクリックして選択を解除してください。 |
権限
SET STATISTICS XML を使用して出力を表示するには、次の権限が必要です。
Transact-SQL ステートメントを実行するための適切な権限。
SHOWPLAN 権限。これは、Transact-SQL ステートメントで参照されるオブジェクトを含むすべてのデータベースに対して必要です。
STATISTICS XML の結果セットを生成しない Transact-SQL ステートメントの場合は、Transact-SQL ステートメントを実行するための適切な権限のみで十分です。Transact-SQL ステートメントで STATISTICS XML の結果セットを生成する場合は、Transact-SQL ステートメントを実行する権限と、SHOWPLAN の権限の両方があることを確認してください。これらの 2 つの権限がないと、Transact-SQL ステートメントの実行は中断され、プラン表示に関する情報は生成されません。
詳細については、「プラン表示のセキュリティ」および「SHOWPLAN 権限と Transact-SQL バッチ」を参照してください。
例
次に示す 2 つのステートメントでは、SET STATISTICS XML の設定を使用し、SQL Server でクエリ内のインデックスの使用状況を分析し最適化する方法を示しています。最初のクエリでは、インデックス付き列の WHERE 句で = (等しい) 比較演算子を使用します。2 番目のクエリでは、WHERE 句で LIKE 演算子を使用します。このように指定すると、SQL Server ではクラスター化インデックス スキャンが行われ、WHERE 句の条件を満たすデータが検索されます。EstimateRows 属性と EstimatedTotalSubtreeCost 属性の値は、インデックスが設定された最初のクエリの方が小さくなっています。これは、インデックスを設定されていないクエリよりも速く処理が行われ、使用リソースが少なかったことを示しています。
USE AdventureWorks2008R2;
GO
SET STATISTICS XML ON;
GO
-- First query.
SELECT BusinessEntityID
FROM HumanResources.Employee
WHERE NationalIDNumber = '509647174';
GO
-- Second query.
SELECT BusinessEntityID, JobTitle
FROM HumanResources.Employee
WHERE JobTitle LIKE 'Production%';
GO
SET STATISTICS XML OFF;
GO