次の種類の SQL クエリがあります。
SELECT * FROM data_table WHERE col2 >= x AND col2 < x+y
data_table には index_1(col1, col2, col3) が存在しますが、列 1 から 3 はゼロより大きい整数値を保持しますが、null 値は許可されません。MySQL のインデックスのすべての左側のプレフィックスもインデックスであるため、私の最初のアプローチは、MySQL が index_1 を使用してクエリが高速化されることを期待して、クエリを変更することでした。変更されたクエリは次のようになります。
SELECT * FROM data_table WHERE col2 >= x AND col2 < x+y OR col1 >0
私の考えは、常に真であるが結果を変更しないものを追加したときでした。
index_1 が使用されるようにクエリを変更する方法を知っている人はいますか? それとも不可能なだけですか?
参考までに: data_table は非常に大きく、作成時間が長いため、col2 で新しいインデックスを作成することは適切なオプションではありません。