id,a,b,c,d,e,f,g
のテーブルがあり、約100万行あります。次に、複数の組み合わせで条件が複数のクエリを作成することができます。 たとえば、a AND b AND e
またはa AND f AND g
またはe AND f AND g
です。複数または単一の化合物インデックス
すべての組み合わせを考慮すると、複数の複合インデックスを作成する必要がありますが、a,b,c,d,e,f,g
の範囲が[1,10]なのでゼロでない場合はどうなりますか?
1は、単に開始変数ごとに単一の化合物を作ることができるようにa,b,c,d,e,f,g
とb,a,c,d,e,f,g
など。とクエリ時間の間に
#b and e have not been chosen
SELECT * FROM WHERE a=3 AND b!=0 AND c=4 AND d=5 AND e!=0 AND f=1 AND g=9
#I think you get the logic
ような何かを、このような手順では、mysqlはまだ私を複合インデックスを使用するか、または行うことができでした複合インデックスのすべての可能な組み合わせを作成する必要があります。
最終結果ではなく、7
この種の問題は、正規化が不十分であることを示すことがあります。 – Strawberry
これは、mysqlのマテリアライズド・ビューのシミュレーションであり、したがって高い数の列です。 – delmalki
ストロベリーは、a-gカラムがすべて同じコンテキストであれば、正規化のポイントを持っています。しかし、あなたのデータがそれぞれa-g列である場合は、私が協力しているgovt contractsテーブルのように、それ自体の正規化された値です。ルートテーブルには、IDに正規化された20以上の個別ルックアップ参照テーブルへのリンクがありました。ジェネリックなa-gコンテキストを超えて展開できる場合は、より明確な説明と状況への入力を提供することができます。 – DRapp