いくつかのインデックス (I1 ~ I5 など) を持つ大きなテーブルがあります。
使用パターンは次のとおりです。
アプリケーション A: すべての選択クエリは 100% インデックス I1 から I4 を使用します (I5 を使用しないよう十分に設計されていると仮定します)。
アプリケーション B: 選択クエリが 1 つだけあり (かなり頻繁に実行されます)、6 つのフィールドが含まれ、対象インデックスとして 5 番目のインデックス I5 が作成されました。
カバーされたインデックスの最初の 2 つのフィールドは、日付とセキュリティ ID です。このテーブルには、約 100 の日付 (クラスター化インデックス I1 によって適用される日付順) の行と、数万のセキュリティ識別子が含まれています。
質問: 対象となるインデックスの列の順序は、アプリケーション B の選択クエリのパフォーマンスに影響しますか?
つまり、インデックスの最初の 2 つのフィールド (日付とセキュリティ ID) を切り替えると、クエリのパフォーマンスが変わるでしょうか? 最後のフィールドの 1 つを切り替えると、クエリのパフォーマンスは変わりますか?
論理 IO は、カバーされたインデックス内のフィールドの順序の影響を受けないままであると想定しています (100% 確実ではありませんが)。
しかし、他のパフォーマンスへの影響はありますか? (オプティマイザーの速度、キャッシュなど...)
質問はバージョン ジェネリックですが、問題がある場合は、Sybase 12 を使用します。
残念ながら、表が膨大なため、実際に指数を変更し、その効果を定量的に確認することは非常に困難です。