通过我的测试得出的结论:
如果索引是(a,b,c)那么不只是a,ab,abc可以走索引,像是bc.acb,bca都可以走索引,or < > between and甚至是in都也是可以走到索引的。(我在很多文章看到说in不能走索引,包括在面试中,面试官也觉得不会走索引的,这个也能跟mysql的版本有关系,下来再去研究下)
在google我找到这样的解释

百度上说:
1,

2,

mysql版本:8.0.18

sql:

建立索引:
ALTER TABLE student ADD INDEX index_student (NAME,weight,height);

验证最左优先原则:
执行:EXPLAIN SELECT * FROM student WHERE NAME = ‘xiaohong’
可以看到走了索引

EXPLAIN SELECT * FROM student WHERE NAME = ‘xiaohong’ AND weight > 120

这样肯定能走索引,再来看一个ba组合
EXPLAIN SELECT NAME,weight,gender FROM student WHERE weight > 120 AND NAME = ‘xiaohong’

这样要可能走索引,但是这个并不满足最左优先原则
还有cba这样的组合也能走索引 ,有点疑惑,不知道是不是innodb优化了sql
EXPLAIN SELECT NAME,weight,gender FROM student WHERE height = 110 AND weight > 120 AND NAME IN (‘xiaohong’)


但是cb bc是不能走索引的

最左优先说会从左向又一次匹配知道遇到> < between and就会停止匹配,

EXPLAIN SELECT * FROM student WHERE NAME = ‘xiaohong’ OR height IN (120,110) OR weight > 120

竟然这样也可以执行到索引。
单独使用in,
执行EXPLAIN SELECT * FROM student WHERE NAME IN (‘xiaohong’)

结论:
如果索引是(a,b,c)那么不只是a,ab,abc可以走索引,像是bc.acb,bca都可以走索引,or < > between and甚至是in都也是可以走到索引的。(我在很多文章看到说in不能走索引,包括在面试中,面试官也觉得不会走索引的

mysql最左前缀原则学习笔记,in也可以走索引相关推荐

  1. MySQL 最左前缀原则

    MySQL建立联合索引时会遵守最左前缀匹配原则,即最左优先,以最左边的为起点任何连续的索引都能匹配上,同时遇到范围查询(>.<.between.like)就会停止匹配.. 我先说一下,我从 ...

  2. 《MySQL实战45讲》——学习笔记04-05 “深入浅出索引、最左前缀原则、索引下推优化“

    04 | 深入浅出索引(上) 1. 什么是索引? 索引的出现其实就是为了提高数据查询的效率,就像书的目录一样,书有500页,每页存的都是书的内容,目录可能只有5页,只存了页码:通过目录能快速找到某个主 ...

  3. mysql非聚集索引区间查询_mysql的聚集索引和非聚集索引,回表查询,索引覆盖,最左前缀原则略解...

    什么是聚集索引和非聚集索引 我们知道 Mysql 底层是用 B+ 树来存储索引的,且数据都存在叶子节点.对于 InnoDB 来说,它的主键索引和行记录是存储在一起的,因此叫做聚集索引(clustere ...

  4. MySQL 覆盖索引、最左前缀原则、索引下推

    1.覆盖索引 1.1 概念 索引是高效找到行的一个方法,当能通过检索索引就可以读取想要的数据,那就不需要再到数据表中读取行了.如果一个索引包含了(或覆盖了)满足查询语句中字段与条件的数据就叫做覆盖索引 ...

  5. mysql索引优化原则:覆盖索引、最左前缀原则、索引下推

    文章目录 前言 round1:覆盖索引 round2:最左前缀原则 round3:索引下推 小结 前言 在文章开始前,小编提出几个问题,读者可以思考一下如何回答.如果对于以下的问题,回答的模棱两可甚至 ...

  6. mysql索引最左前缀原则

    mysql索引最左前缀原则 创建索引可以大大提高系统的性能. 第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性. 第二,可以大大加快数据的检索速度,这也是创建索引的最主要的原因. 第三, ...

  7. 【MySQL】索引原理(三):联合索引(最左前缀原则),覆盖索引,索引条件下推

    准备工作,下面的演示都是基于user_innodb表: DROP TABLE IF EXISTS `user_innodb`; CREATE TABLE `user_innodb` (`id` big ...

  8. 【MySQL】索引优化中的最左前缀原则和索引下推

    目录 一.引入 二.覆盖索引 ​ 讲接下来的问题前首先讲一下联合索引的底层存储结构长什么样?联合索引的检索过程是什么样的呢? 三.最左前缀原则 最左前缀原则的定义 四.索引下推 五.小结 一.引入 在 ...

  9. 《MySQL实战45讲》——学习笔记01-03 “MySQL基本架构、日志系统、事务隔离“

    最近有新闻说"丁奇"炒股失败欠债,赶紧去极客时间买了他的<MySQL 实战 45 讲>以防下架,顺带重新系统的复习下MYSQL相关知识,记录下学习笔记: 本篇介绍: M ...

  10. 数据库性能优化1——正确建立索引以及最左前缀原则

    1. 索引建立的原则 用于索引的最好的备选数据列是那些出现在WHERE子句.join子句.ORDER BY或GROUP BY子句中的列. 仅仅出现在SELECT关键字后面的输出数据列列表中的数据列不是 ...

最新文章

  1. 2021年大数据ELK(十一):Elasticsearch架构原理
  2. TensorRT重磅更新!10亿参数大模型实时运行,GPT推理加速21倍
  3. 浙江发布数字化改革标准化体系建设方案,将于2025年底建成
  4. usb过滤驱动inf_N卡驱动全家桶专治工具升级:专为玩家打造
  5. spring boot基础教程之文件上传下载
  6. python3.7下载教程视频_视频 | 我选择Python3.7来学习!顺便把教程分享给大家
  7. 02 复习流程语句 以及跳转语句
  8. 2.图像作为函数 | 如何把图像看作函数_2
  9. 电子科大820历年真题_【真题实战】电子科技大学2016计算机专业基础820真题
  10. python为什么那么多人点赞_python为何会火遍全球?它究竟是什么呢?阿里大佬告诉你答案...
  11. Ueditor和CKeditor wysihtml5 编辑器的使用与配置
  12. C# action 返回值_C#知识点讲解之C#delegate、event、Action、EventHandler的使用和区别
  13. modulenotfounderror python_你所不知道的 【ModuleNotFoundError: No module named ''; '' is not a package】...
  14. 【Typecho插件-前端-播放器】BiliVid -- 好用的Bilibili视频链接解析播放器
  15. 营销理论模型:4P、STP理论、SWOT图解
  16. 74CMS4.1.2.4版本黑盒测试
  17. 什么是微信公众平台?
  18. 数据结构习题练习(一)-绪论
  19. 买不起流量,那1.7亿日活的小程序可以拯救创业者吗?
  20. 关于python搞笑段子精选_你能讲一个让人瞬间爆笑的笑话吗?

热门文章

  1. 中坚力量:Isilon
  2. 权重确定方法五:CRITIC权重法
  3. Chrome 的小恐龙游戏,被我破解了
  4. 【C/C++基础进阶系列】实战记录 -- 内存泄漏检测相关总结
  5. ssl免费证书的申请
  6. 手机“入殓师”,你之前有听过吗?
  7. 如何解决back order中,confirmed qty can't be change的问题
  8. [无忧网络验证]代理使用教程
  9. PR期刊投稿要求(整体要求、Title page、Highlight)
  10. 虚拟机安装win10提示operating system not found