很多面试官可能都不知道,mysql不满足最左原则,真的会导致索引失效吗? - Go语言中文社区

很多面试官可能都不知道,mysql不满足最左原则,真的会导致索引失效吗?


前言

之前很多面试都被问过联合索引不匹配最左原则失效的问题,当时一直以为只要不满足最左原则,联合索引就会失效,面试官也没有反馈过有什么问题,今天突然发现一条sql并没有遵循最左原则,但还是用到了联合索引。

测试

表结构:

name和age字段建立联合索引

查询覆盖索引命中的字段:

explain select age from test where age = 2644;

 查询count(*) (不查询具体字段):

explain select count(*) from test where age = 2644;

查询非覆盖索引的字段:

explain select status from test where age = 2644;

结论

  • 查询非覆盖索引字段时,不会使用索引
  • 查询覆盖索引字段时,会使用索引,但是扫描的行数仍然是全表,之所以使用索引,是因为索引大小<全表大小(前提是覆盖索引不是全部字段),所以可以有效减少IO,查询优化器仍然会利用索引。
  • 查询count(*)原理同上
版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/why444216978/article/details/105165794
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-06-27 23:03:36
  • 阅读 ( 934 )
  • 分类:面试题

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢