2017-01-23 26 views
0

私はインデックスについて学びたいと考えています。ブレント・オザルのサイトからたくさんのことを学べましたが、フォローアップの質問がありました。複数のフィールドまたは複数のインデックスを持つインデックス

ブレント氏のビデオでは、列がwhere句にある場合、インデックスの最初の列である必要があると述べています。私の質問は、where句が同じテーブルから複数のカラムを持つ場合、where句の順序でリストされたカラムを持つインデックスか、各カラムにそれ自身のインデックスがあるかどうかです。

これらのテーブルは1日1回更新され、約1,000万レコードが含まれています。私はあなたのクエリにSQL Serverに2012

答えて

1

ベースを使用しています

は、これら二つの異なるインデックスが大幅に異なるものになります。

あなたが計画を下回る使用する一つの複合インデックス(1つのインデックス内の2フィールド)、SQL Serverの を持っており、それは非常に高速である場合は、WHERE句の両方のフィールド、

を持っている場合。

Composite Index Plan

あなたは、各フィールドの上に2つの別々のインデックスを持っている場合は、SQL Serverは 別のプランを使用しています(上記のことはるかに遅い)

Separate Index Plan

ご覧のとおりそれぞれのデータセットを異なるスレッドで見つけ出し、それらをマージします。

あなたのデータに基づいて異なる計画が立てられるかもしれませんが、これはSQL Serverの一般的な動作です。

+0

パーフェクトありがとう –

関連する問題