複数列のインデックスについて説明するときは、電話帳との類似性を使用します。電話帳は基本的に、名前、次に名のインデックスです。したがって、ソート順は、どの「列」が最初であるかによって決定されます。検索はいくつかのカテゴリに分類されます:
-
家系の名前がスミスの人を検索すると、本が名前でソートされているため、簡単に見つけることができます。
-
ジョンという名の人を検索すると、ジョンが本のいたるところに散らばっているので、電話帳は役に立ちません。すべてを見つけるには、電話帳全体をスキャンする必要があります。
-
特定の姓のスミスと特定の名のジョンの人を検索すると、スミスが一緒に並べ替えられていることがわかり、そのグループ内でジョンも並べ替えられた順序で見つかるため、この本は役に立ちます。
電話帳を名で並べ替えてから名前で並べ替えた場合、本の並べ替えは上記のケース#2と#3で役立ちますが、ケース#1では役に立ちません。
これは正確な値を検索する場合を説明していますが、値の範囲で検索する場合はどうでしょうか。ファーストネームがジョンで、ラストネームが「S」で始まるすべての人(Smith、Saunders、Staunton、Shermanなど)を検索するとします。ジョンは各姓の中で「J」の下にソートされますが、「S」で始まるすべての姓のすべてのジョンが必要な場合、ジョンはグループ化されません。それらは再び散らばっているので、最後の名前が「S」で始まるすべての名前をスキャンする必要があります。一方、電話帳が名、名前の順に整理されている場合は、すべてのジョンが一緒に表示され、ジョン内では、すべての「S」の名前がグループ化されます。
したがって、複数列のインデックスの列の順序は間違いなく重要です。あるタイプのクエリでは、インデックスに特定の列順序が必要になる場合があります。複数の種類のクエリがある場合は、それらを支援するために、列の順序が異なる複数のインデックスが必要になる場合があります。
私のプレゼンテーションを読むことができます