mysql使用explain索引分析结果帮忙给看一下 谢谢
表的相关情况如下:
结构:
数据:
联合索引:
分析语句如下:
EXPLAIN SELECT
*
FROM
c_test
WHERE
c3 = 6
AND c4 = 8
AND c5 =3
结果如下:
不明白为什么possible_keys为null了, key却有值, 然后rows为7,这特么不是全表扫描么!!!
而Extra的Using index不是覆盖索引么, 懵逼了!!!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
全字段覆盖索引本身就包含了所有数据,所以会用到不奇怪,possible_keys是mysql判断这个sql没有有效的索引可用给你一个null,key是执行计划选择一个代价较低的方式检索而已(因为选择全表代价近似),另外因为聚簇索引和索引文件的数据文件在磁盘上是一起存储的,检索聚簇索引可能要扫描这一整个数据文件,而检索覆盖索引就少些了,至于rows就是要扫描整个索引段,当然就是全数据行检索了。
你的索引c1c2排在最前面,查询时where里又没有,所以索引是用不上的.
EDITED:
你这结果之所以这样,是因为聚簇索引的原因, 你的索引包含了全部数据(主键在所有的索引里都存在), 等于是和扫描全表一样的.
以下是有点长的解释, 有兴趣的可以执行看看
explain-join-types (MySQL 5.7 Reference Manual)