by Hayato Matsuura.

実行計画の表示方法


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

著者について

Markus Winandの写真

Markus Winand氏は、開発者がSQLパフォーマンスを改善するお手伝いをしています。彼は、SQL Performance Explainedの 著者でもあり、出張トレーニングhttp://winand.at/での リモート講義も 行っています。

彼の本

カバー『SQLパフォーマンス詳解』

核心をわかりやすく 解説。

Markusから購入します
(送料無料+PDF)

Amazonで購入
(印刷版のみ)

“Use The Index, Luke!” by Markus Winand is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License.
法律上の通知 | 接触 | 無保証 | 商標 | Privacy | CC-BY-NC-ND 3.0 license