1.このクエリのパフォーマンスを向上させるには、インデックス(b、c)とインデックス(c、b)を作成する必要がありますか、それとも最初のインデックスで十分ですか?
両方のインデックスを作成する必要はありません。2つのうちのいずれかをクエリの実行に使用すると、このタイプのクエリ(where b = 1 and c = 2
条件付き)の効率が同等に向上する可能性があります。使用するかどうか、パフォーマンスを向上させるかどうかは、インデックスの選択性によって異なります。
2.私が理解していることから、インデックス(b、c、a)はパフォーマンスをさらに向上させる可能性がありますが、(b、c、a)が(b、c)よりも一意である場合に限ります。あれは正しいですか?
はい。のインデックス(b , c, a)
(または(c, b, a)
同様に1つのインデックス)は、パフォーマンスを向上させます。選択性に依存しない。(b, c)
インデックスを読み取る(およびインデックス内の同じ場所からすべて)を読み取ることは、(インデックスを読み取りa
、(おそらくはるかに広い)テーブルからここと別の行から列データを取得することよりも悪いことはありません。
クエリが返す行数などの選択性は(b, c)
、効率の向上に影響し、(b, c, a)
インデックスによって得られます。クエリが数十行を返す場合、違いはわずかです。クエリが数百万のテーブルのうち数千の行を返す場合、すべてのデータが(カバーする)インデックスから読み取られるため、改善は大きくなります。
3. SQLの質問はdba.stackexchangeサイトに属していますか?
これは、メインサイトまたはDBA.SEメタのいずれかのメタサイトに対する質問です。