mysql为什么查询结果列对索引的影响大于查询条件列

我一直以为我的where条件中有EndTime和SensorID,理论上就应该命中EndTime_SensorID联合索引,但是实际上,用到了EndTime_UserID索引。。。。
mysql为什么要这么设计啊

回答

因为你的查询条件先是范围查询,而范围查询以后的索引失效,所以此处实际上,只有EndTime列是走了索引的(从type和key_len可以看出来),而EndTime列相关的索引有两个,又因为查询的字段里只有UserID和EndTime,正好覆盖到了EndTime_UserID这个索引,所以MySQL优化器认为走这个索引会更快,所以。。。

以上是mysql为什么查询结果列对索引的影响大于查询条件列的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>