Mysql索引及最左原则 explain

说明一点,大家都知道Mysql有一个联合索引最左原则,但是经过测试发现。
有主键,的联合主键没有遵循最左原则:

可能会走到联合索引的,为什么说可能,MYSQL的执行计划和查询的实际执行过程并不完全吻合,比如你数据库数据量很少,可能直接全量遍历速度更快,就不走索引了。

有id主键,不走联合索引

只有索引字段则走索引

主键联合索引,走索引

唯一联合索引也会走索引

下面的解释,我不知道是不是应验了上面的测试:

可能会走到联合索引的,为什么说可能,MYSQL的执行计划和查询的实际执行过程并不完全吻合,比如你数据库数据量很少,可能直接全量遍历速度更快,就不走索引了。

SQL性能优化的目标:至少要达到 range 级别,要求是ref级别,如果可以是const最好。说明:
explain结果
•1)const 单表中最多只有一个匹配行(主键或者唯一索引),在优化阶段即可读取到数据。
•2)ref 指的是使用普通的索引,然后进行回表操作。(normal index)
•3)range 对索引进行范围检索。反例:explain表的结果,type=index,索引物理文件全扫描,速度非常慢,这个index级别比较range还低,与全表扫描是小巫见大巫。
•4)index 遍历普通索引全部记录 表示用到了索引树 但是需要全树遍历
•5)all 全表扫描

索引失效:
https://mp.weixin.qq.com/s/htPqe0V-YZ1pcgOmB142TQ

posted @ 2021-08-20 18:51  倔强的老铁  阅读(168)  评论(0编辑  收藏  举报