SQL Serverには、実行計画の取得方法が複数あります。最も重要なのは以下の2つです。
- グラフィカルな形式
グラフィカルな形式でのSQL Serverの実行計画は、Management Studioから簡単に表示できます。しかし、対応する処理の上にマウスを載せた時(hoverした時)しか述語情報が表示されないので、 シェアしづらいのが難点です。
- テーブル形式
テーブル形式での実行計画は読みづらいですが、 全ての情報が一度に表示されるので、コピーしやすくなっています。
グラフィカルな形式
グラフィカルな形式での実行計画は、以下のようにハイライトされた2つのボタンのうちのどちらかから生成します。

左のボタンは、直接ハイライトされている文の実行計画を出します。 右のボタンは、次にSQL文が実行された時に実行計画を保存します。
どちらの場合も、グラフィカルな形式での実行計画は「Result」ペインの「Execution plan」タブに表示されます。
グラフィカルな形式だと、慣れれば読みやすいでしょう。しかし、行われる処理と対象のテーブル及びインデックスと言う、非常に基本的な 情報しか表示されません。
マウスを処理の上に動かすと(マウスオーバー)、より詳しい情報が 表示されます。このせいで、実行計画を詳細付きでシェアしづらくなっています。
協力してください
この記事が気に入ったら、私の書いた本「SQLパフォーマンス詳解」や私によるトレーニングもきっと気にいるはず。
テーブル形式
テーブル形式でのSQL Serverの実行計画は、文の実行をプロファイリングする事で取得できます。 これを有効にするには、以下のコマンドを実行します。
SET STATISTICS PROFILE ON
一度有効にすると、文の実行の度に追加の結果セットが生成されます。例えばselect
文の場合、文自体の結果セットと、
実行計画の2つができる事になります。
テーブル形式の実行計画は、StmtText
列の情報の横幅が広すぎるので、SQL Server Management Studioで使うのには難があります。

この形式の良い点は、情報を失わずにコピーできる事でしょう。
掲示板やその他の場所に、実行計画を貼り付けたりする時に非常に便利です。
このような場合には、StmtText
列をコピーし、少しだけフォーマットを直す位で十分でしょう。
select COUNT(*) from employees;
|--Compute Scalar(DEFINE:([Expr1004]=CONVERT_IMPLICIT(...))
|--Stream Aggregate(DEFINE:([Expr1005]=Count(*)))
|--Index Scan(OBJECT:([employees].[employees_pk]))
そして最後にプロファイリングを無効にします。
SET STATISTICS PROFILE OFF