レガシー システムの非常に幅の広いテーブルに対する SQL クエリの最適化に取り組んでいます。さまざまな理由により、現時点ではテーブルを絞り込むことができません。
作成したインデックスに対してインデックス シークを実行し、ブックマーク ルックアップを使用して必要な追加の列を検索し、インデックスに存在しないため、クエリの実行が遅くなります。ブックマーク ルックアップは、クエリ時間の 42% を占めます (クエリ オプティマイザによると)。
テーブルには 38 の列があり、その一部は nvarchars であるため、すべての列を含むカバリング インデックスを作成することはできません。すべての列をカバーするインデックスを作成してインデックスの交差を利用しようとしましたが、これらの「カバーする」インデックスは実行計画によって選択されず、使用されません。
また、38 列のうち 28 列がこのクエリによって引き出されるため、テーブル内の列の 28/38 がこれらのカバー インデックスに格納されることになるため、これがどの程度役立つかはわかりません。
ブックマーク ルックアップは十分に優れていると思いますか、それとも別の選択肢は何でしょうか?
(これが SQL Server 2000 であることを指定する必要があります)