SQL Engine Reference (v11)

Query Plan Viewer


おそらく、SQL パフォーマンスの最も複雑な面は、クエリの最適化です。データベース エンジンはクエリの最適化を自動的に実行しますが、クエリ構造自体が全体的な性能やエンジンによる最適化方法に影響する可能性があります。

ほとんどすべてのクエリは、2 とおり以上の書き方をしても、同じ結果セットを返すことができます。たとえば、単純な "SELECT * FROM table1" というクエリについて考えてみましょう。table1 には 5 つの列があり、col1、col2、(以下同様)という名前が付けられているとします。クエリを "SELECT col1, col2, col3, col4, col5 FROM table1" と記述しても、同様の結果セットをもたらすことができます。

これら 2 つのクエリを視覚的に比較した場合、SELECT * の方が、各列を名前で列挙するよりも単純なように見えます。しかし、クエリ内に各列を名前で列挙することによって、ごくわずかながらパフォーマンスが引き上げられます。これは、SELECT * の場合には、アスタリスク記号を列名に解析しなければならないからです。クエリ自体でそのような解析を前もって実行しておけば、その作業は必要でなくなります。

パフォーマンスを向上させる最良の方法は、データベースに対してクエリを実行するのに必要な時間を最小限にすることです。クエリは非常に複雑にすることも、途方もなく大きい構造にすることもできるため、考え得るすべてのクエリの最適化について、この付録で説明することはできません。しかし、Query Plan Viewer を使用することによって、クエリの最適化方法をよりよく判断できるようになります。

Query Plan Viewer は、データベース エンジンによって選択されたクエリ プランを表示することができるグラフィカル ユーザー インターフェイスです。クエリ プランでは SELECT、INSERT、UPDATE または DELETE ステートメントについて表示できます。


サンプル XML ファイルの実行例

Query Plan の設定