テーブルT 2列は、2つの索引を比較する:(b)と(a)の
a varchr(50) not null
b varchr(50) not null
を持っているだけ(例えばfoo1,foo2,...
)を指定した検索シナリオの下
検索を持つことができます(
select a,b,status,count(*) where a in (xxx) group by a,b,status
)検索のみを(例えば
bar1,bar2,...
)(select a,b,status,count(*) where b in (xxx) group by a,b,status
) Bを指定します
AおよびB(
select a,b,status,count(*) where a in (xxx) and b in (xxx) group by a,b,status
)を指定両方
は当然、例えば、aとbのインデックスを作成する必要があります
alter table t add key idx_a_b (a,b);
alter table t add key idx_b (b);
が、インデックスは、インデックス
alter table t add key idx_a (a);
alter table t add key idx_b (b);
以下との違いを持っている上に、私はそれが多分無視する可能性の違いを持っている場合と思えば今、私は疑問に思います。私は正しい?
私が間違っていない場合、最初の例は、aのみを照会するとき、またはaとbを照会するときに使用されます。だから、3つではなく2つのインデックスしか必要ないので、少し効率的ですが、その差はごくわずかです。たぶん両方を試して、いくつかの説明とプロファイリングをしてください。 – FMashiro