ITエンジニアの成長ブログ

ITエンジニアとして行う勉強の発信&日々の生活で体験した楽しいことをゆるく発信

SQL Serverの実行計画をグラフィカルに表示する

本日は、SSMSでSQL Serverの実行計画をグラフィカルに表示する方法を簡単に紹介したいと思います。

テキストベースで表示する方法は以下の記事になりますので、よろしければ合わせてご確認いただければ嬉しいです。
SQL Serverの実行計画をテキストで表示する - ITエンジニアの成長ブログ

推定実行プランを取得する

まずは、推定実行プランを取得する方法を紹介します。これは、実際にクエリを実行することなくグラフィカルな実行プランを取得することができます。手軽に確認したいケースにぴったりだと思います。
推定実行プランの表示 - SQL Server | Microsoft Learn

実際に取得する方法とその表示を見ていきます。SSMSを開き、クエリシートに実行計画を確認したいクエリを記載し、下記の赤枠のボタンを押下します。

推定実行プランの実行方法

すると、推定実行プランを取得した結果が以下のような形で表示されると思います。今回は、Microsoftが提供しているサンプルデータベース"AdventureWorks2016"の"[Person].[Address]"テーブルのすべてのレコードを取得するSQLの結果を表示しています。

推定実行プランの実行結果

実行計画の処理順は右から左となるようです。今回は、「Clustered Index Scan」とあるとおり、"[Person].[Address]"テーブルのクラスターインデックスをスキャンして実際のレコードを取得していると解釈することができます。

また、以下のようにアイコンをマウスオーバーするとその処理の詳細情報を見ることができますね。内容としては、どのくらいのコストになりそうか、読み取りするレコードの予測はどの程度か、処理対象のオブジェクトは何か、この処理で何を出力するのかなどが見えます。

アイコンをマウスオーバーする1

今回は、一つのテーブルを単純なインデックスのフルスキャンなのでとてもシンプルな実行計画となりましたが、複雑なクエリの場合は多くのアイコンが表示されることがあります。

実際の実行プランを取得する

次に、実際の実行プランを取得する方法を紹介します。先ほどの推定実行プランの取得では、クエリは実際に実行されることはありませんでした。しかし、実際の実行プランを取得する場合には名前の通り実際にクエリが実行されて実行プランを取得することになります。
実際の実行プランの表示 - SQL Server | Microsoft Learn

推定実行プランではクエリ実行していないため、あくまで予測の結果となっていましたが、こちらの取得方法では実際のリソース使用状況を含めた結果を取得することができるため、正確な情報を取得したい場合はこちらを選択するのがいいかもしれません。

こちらも実際に取得する方法とその表示を見ていきます。SSMSを開き、クエリシートに実行計画を確認したいクエリを記載し、下記の赤枠のボタンを押下します。こちらのボタンを押下しておくことで、クエリを実行すると実際の実行プランも合わせて取得してくれるようになります。

実際の実行プランを実行方法

上記の設定後、通常どおりクエリを実行すると以下のとおりクエリ結果が表示されると思います。

実際の実行プランを取得1

上記をよくみると、「実行プラン」というタブが表示されていると思います。それを選択すると推定実行プランと同様な実行計画をグラフィカルに見えることができます。

実際の実行プランを取得2

基本的な見方は先ほどの推定実行プランと同様です。一つ補足としては、アイコンをマウスオーバーして見れる情報に若干の違いがあります。先ほどはあくまで予測でしたが、こちらは実際の実行結果による情報も合わせて取得されているということだと思います。

アイコンをマウスオーバーする2

おわりに

いかがでしょうか。簡単にSSMSで実行計画をグラフィカルに表示する方法を見ていきました。実際には表示した実行計画を解読する必要がありますが、そこらへんの細かい話は今回は割愛します。正直、めちゃくちゃ読み込みできるわけではないのでそこらへん詳しくなったら紹介したいなと思っています。

今回は、実行計画をグラフィカルに表示する方法を見ていきましたが、実はテキストベースでも取得可能です。グラフィカルな結果より、やや解釈するのが難しいかもしれませんが、慣れればテキストベースの方が良いかもしれません。こちらはまた別の機会に紹介したいと思います。

今回も最後までお読みいただきありがとうございました。今回はこの辺で失礼いたします。