SQL Serverでは、SET SHOWPLAN_ALL
を使用できます。 T-SQLステートメントの実行方法に関する詳細情報、およびステートメントのリソース要件の見積もりを返すステートメント。
SHOWPLAN_ALL
SQLServerクエリプロセッサが各ステートメントを実行するときに実行する手順を表す階層ツリーを形成する行のセットとして情報を返します。 SHOWPLAN_TEXT
に似ています 、ただしSHOWPLAN_ALL
より詳細な情報を返します(出力を処理できるアプリケーションで使用することを目的としています)。
SHOWPLAN_ALL
を設定できます ON
のいずれかに またはOFF
。
SHOWPLAN_ALL
の場合 ON
です 、後続のすべてのT-SQLステートメントは実行されません。代わりに、SQL Serverはステートメントの実行情報を(実行せずに)返します。
SHOWPLAN_ALL
に注意することが重要です 見積もりを提供します リソース要件の内、およびステートメントが実際に実行されるときに実際のリソース要件が異なる場合があります。
例
実例を示します。
SET SHOWPLAN_ALL ON;
GO
SELECT * FROM Cats;
GO
SET SHOWPLAN_ALL
に注意してください ストアドプロシージャ内で指定することはできません。また、バッチ内の唯一のステートメントである必要があります。
AzureDataStudioでの結果は次のようになります。
垂直出力を使用した場合のmssql-cli(コマンドラインインターフェイス)の外観は次のとおりです。
Commands completed successfully. -[ RECORD 1 ]------------------------- StmtText | SELECT * FROM Cats; StmtId | 1 NodeId | 1 Parent | 0 PhysicalOp | NULL LogicalOp | NULL Argument | 1 DefinedValues | NULL EstimateRows | 3 EstimateIO | NULL EstimateCPU | NULL AvgRowSize | NULL TotalSubtreeCost | 0.0032853 OutputList | NULL Warnings | NULL Type | SELECT Parallel | 0 EstimateExecutions | NULL -[ RECORD 2 ]------------------------- StmtText | |--Clustered Index Scan(OBJECT:([Test].[dbo].[Cats].[PK__Cats__6A1C8AFAB3EF1A8F])) StmtId | 1 NodeId | 2 Parent | 1 PhysicalOp | Clustered Index Scan LogicalOp | Clustered Index Scan Argument | OBJECT:([Test].[dbo].[Cats].[PK__Cats__6A1C8AFAB3EF1A8F]) DefinedValues | [Test].[dbo].[Cats].[CatId], [Test].[dbo].[Cats].[CatName] EstimateRows | 3 EstimateIO | 0.003125 EstimateCPU | 0.0001603 AvgRowSize | 142 TotalSubtreeCost | 0.0032853 OutputList | [Test].[dbo].[Cats].[CatId], [Test].[dbo].[Cats].[CatName] Warnings | NULL Type | PLAN_ROW Parallel | 0 EstimateExecutions | 1 (2 rows affected) Commands completed successfully.
列がたくさんあるので、読みやすくするためにここでは垂直出力を使用しました。
クエリがより複雑な場合、より多くの行が返されます。
これは(少し)複雑なクエリの例です。
SELECT * FROM Cats c
INNER JOIN Dogs d
ON c.CatName = d.DogName;
結果:
オフにする方法
SET SHOWPLAN_ALL OFF
を使用してオフにできます 。
これを実行すると、後続のステートメントは通常どおり実行されます。
SET SHOWPLAN_ALL OFF;
GO
SELECT * FROM Cats;
GO
結果:
Commands completed successfully. +---------+-----------+ | CatId | CatName | |---------+-----------| | 1 | Meow | | 2 | Fluffy | | 3 | Scratch | +---------+-----------+ (3 rows affected) Commands completed successfully.
非推奨かどうか?
この古いMSDNの記事によると、SET SHOWPLAN_ALL
は将来のshowplanバージョンで廃止される予定であり、SET SHOWPLAN_XML
を使用することをお勧めします。 代わりに。
ただし、そのMSDNの記事はSQL Server 2008 R2に関するものであり、私がこれを書いている時点では、SQL Server 2019で非推奨になっているようには見えません。実際、現在のドキュメントでは非推奨について言及されておらず、含まれていません。 SQLServerで非推奨のアイテムのリストを実行したとき。
いずれにせよ、将来のリリースで使用する前に、これを念頭に置いておくとよいでしょう。
グラフィカル実行プラン
SSMSやAzureDataStudioなどのグラフィカルツールを使用している場合は、現在のクエリの推定グラフィカルクエリ実行プランを表示するオプションがある場合があります。
- SSMSでは、 Ctrl + Lを使用できます これをする。または、推定実行プランの表示をクリックすることもできます アイコンをクリックするか、クエリウィンドウを右クリックして、[推定実行プランの表示]を選択します。 。
- Azure Data Studioでは、説明をクリックできます クエリウィンドウの上にあるボタン。
SET SHOWPLAN_XML ON
を使用することもできます 有効にするには、SET SHOWPLAN_XML OFF
無効にします。