でスキップ列は我々が今、私たちは次の形式でクエリを実行する列A、BおよびCの 上に複数列のインデックスを持つ(ビッグ)のテーブルを持っている:多くがありますので SELECT * FROM table WHERE (B=... AND C=...) OR (B=... AND C=...) OR ...
テーブル内の行で、インデックスが使用されていない場合、クエリのパフォーマンスは非常に悪いです。のMySQL - インデックス
B、C列のインデックスは理想的ですが、残念ながら利用できません。他のベンダーも変更することはできません。列Aには興味のない値があります。
MySQLに利用可能なインデックスを使用させるために、WHERE:SELECT * FROM table WHERE (A IN (1, 2, 3, 4, 5, ..., 99, 100)) ((B=... AND C=...) OR (B=... AND C=...))OR ...
に余分な条件を追加しました。その結果、インデックスが適切に使用され、クエリのパフォーマンスはすでにかなり向上しています。しかし、クエリでAのすべての可能な値を提供するのはちょっと醜いようです。私の気持ちは、同じことをやるより簡単なやり方や、より良いパフォーマンスが必要であるということです。
クエリでカラムAが使用されていない場合でも、MySQLにインデックスを強制的に使用させる方法はありますか?または、私たちはすでに最高のソリューションを見つけましたか?
クリーナーかもしれないが、それは動作しません言いたかったです!より洗練されたバージョンをテストする –