0

最大 5 つのパラメーターを受け入れるストアド プロシージャを呼び出す検索があります。クエリには多数のテーブルがありますが、パラメーターはすべてクエリ内の単一のテーブルでフィルタリングされています。問題は、params (テーブル内のフィールド) ごとにインデックスを作成するか、それらすべてをカバーする 1 つのインデックスを作成する方がよいかということです。明らかに、これらのフィールドの 1 つ以上を独自の目的で使用する可能性のある他のクエリがあるので、おそらく各フィールドのインデックスを残す価値があります。

それが明確な質問ではない場合は申し訳ありません

質問: すべての検索フィールドをカバーするカバリング インデックスを作成した方がよいでしょうか。またはそれぞれのインデックス

どちらがより良い習慣ですか?

どんな助けでも大歓迎です

ナット

4

1 に答える 1

0

答えは、「最大」5つのパラメーターが最も一般的にどのように指定されているかによって異なると思います。特定の順序で一般的に指定される場合 (例: clientid、clientid + accountid、または clientid + accountid + month などのレコード)、その順序でカバーするクエリを作成すると、<5 のほとんどクエリは引き続き効率的に使用できます。

特定のパラメーターが指定され、比較的ランダムではないOTOHの場合、およびこれらの列のいくつかにインデックスを必要とする他のプロセスがある場合は、各列に個別にインデックスを付けることもできます。

もちろん、理想的な世界では、経験的に正しい決定を見つけるためのパフォーマンス テスト装置が必要です。しかし、理想的な世界で構築されるプロジェクトはほとんどありません。それでも、DEV リグが本番環境とはまったく似ていなくても、多少のテストに勝るものはありません。

于 2013-01-30T15:52:35.627 に答える