我有一个MysQL 5.7表,有大约500米的记录,上面有一个唯一的索引(column1,column2,column3,date)。
在某些情况下,我只查询某一天的记录。例如日期= curdate() -间隔2天。这可能需要1分钟。
如果日期上有一个单独的指数,会有什么好处吗?
发布于 2021-03-30 05:56:31
这里需要注意的一点是,对于只涉及date列的查询,MySQL将无法使用当前的4列索引。造成这种情况的原因是B树在访问date列之前会在其他3列上拆分。因此,如果MySQL要完成索引扫描,则该索引只能满足日期查询。通常,在这种情况下,MySQL只想做一个完整的表扫描,而不去理会索引。
因此,如果只希望日期筛选器查询使用索引,则必须添加新索引:
CREATE INDEX idx2 ON yourTable (date);关于指数“膨胀”,即有太多的指数,你并没有真正接近,只有两个指数定义。如果您确实发现您已经定义了5-7个索引,那么您可能能够组合或合并它们。
https://stackoverflow.com/questions/66865435
复制相似问题