我在mySql中有这个查询:
SELECT field1
FROM table1
WHERE tdate > '2018-6-01' OR (tdate BETWEEN '2015-4-07' AND 2016-6-07);
什么会提高查询效果,tdate
上的索引或(tdate, field1)
上的覆盖索引?
答案 0 :(得分:1)
您可以使用included columns创建索引:
使用较大的索引键大小重新设计非聚簇索引,以便只有用于搜索和查找的列才是关键列。将覆盖查询的所有其他列转换为非键列。 通过这种方式,您将拥有覆盖查询所需的所有列,但索引键本身很小且效率很高。
CREATE INDEX my_idx_name ON tab_name(tdate) INCLUDE (field1)