我有以下类型的 SQL 查询:
SELECT * FROM data_table WHERE col2 >= x AND col2 < x+y
data_table 上有一个 index_1(col1, col2, col3) ,而第一到第三列保存大于零的整数值,而不允许使用空值。由于 MySQL 中索引的每个左前缀都是索引,我的第一个方法是修改查询,希望 MySQL 将使用 index_1 并加快查询速度。修改后的查询如下所示:
SELECT * FROM data_table WHERE col2 >= x AND col2 < x+y OR col1 >0
我的想法是,当我添加一些始终正确但不改变结果的东西时,MySQL 将使用 index_1(col1, col2) 的左前缀,但快速浏览一下 EXPLAIN,不幸的是它没有。
有谁知道如何修改查询以便使用 index_1 ?还是只是不可能?
供您参考:data_table 非常大,由于创建时间长,使用 col2 创建新索引不是一个合适的选择。