创建表

插入 10000 条数据

建立了联合索引(a,b,c)

验证:

explain 指令详解可以查看

explain select * from test where a<10 ;

explain select * from test where a<10 and b <10;

explain select * from test where a<10 and b <10 and c<10;

能不能将 a,b出现顺序换一下,a,b,c出现顺序换一下

explain select * from test where b<10 and a <10;

explain select * from test where b<10 and a <10 and c<10;

不是最左匹配原则吗?

查了下资料发现:mysql查询优化器会判断纠正这条sql语句该以什么样的顺序执行效率最高,最后才生成真正的执行计划。所以,当然是我们能尽量的利用到索引时的查询顺序效率最高咯,所以mysql查询优化器会最终以这种顺序进行查询执行。

重点来了

explain select * from test where b<10 and c <10;、

explain select * from test where a<10 and c <10;

为什么 b<10 and c <10,没有用到索引?而 a<10 and c <10用到了?

当b+树的数据项是复合的数据结构,比如(name,age,sex)的时候,b+数是按照从左到右的顺序来建立搜索树的,比如当(张三,20,F)这样的数据来检索的时候,b+树会优先比较name来确定下一步的所搜方向,如果name相同再依次比较age和sex,最后得到检索的数据;但当(20,F)这样的没有name的数据来的时候,b+树就不知道下一步该查哪个节点,因为建立搜索树的时候name就是第一个比较因子,必须要先根据name来搜索才能知道下一步去哪里查询。比如当(张三,F)这样的数据来检索时,b+树可以用name来指定搜索方向,但下一个字段age的缺失,所以只能把名字等于张三的数据都找到,然后再匹配性别是F的数据了, 这个是非常重要的性质,即索引的最左匹配特性。

mysql 最左_mysql索引最左匹配原则相关推荐

  1. Mysql复合索引最左匹配原则以及索引失效条件

    Mysql复合索引最左匹配原则以及索引失效条件 复合索引最左匹配原则 用EXPLAIN 来查看语句是否用到了索引 索引失效的条件 一般性建议 复合索引最左匹配原则 复合索引又叫联合索引.两个或更多个列 ...

  2. 数据库索引最左匹配原则

    索引最左匹配原则 建立联合索引时会遵循最左匹配原则,即最左优先,在检索数据时从联合索引的最左边开始匹配 例如: 为user表中的name.address.phone列添加联合索引 ALTER TABL ...

  3. mysql索引最左匹配原则的理解

    我记得网易面试的时候问到了.阿里也面到了 创建表 create table test( a int , b int, c int, d int, key index_abc(a,b,c) )engin ...

  4. mysql精讲_Mysql 索引精讲

    开门见山,直接上图,下面的思维导图即是现在要讲的内容,可以先有个印象- 常见索引类型(实现层面) 索引种类(应用层面) 聚簇索引与非聚簇索引 覆盖索引 最佳索引使用策略 1.常见索引类型(实现层面) ...

  5. 联合索引-最左匹配原则

    前言: 面试官:建过索引嘛? 我有一个朋友:见过呀! 面试官:那你知道MySQL的执行计划嘛? 我有一个朋友:啊?!! 面试官:那你肯定知道最左匹配原则吧. 我有一个朋友:额... 想必大家面试时都被 ...

  6. 简述一下索引的匹配原则_索引最左匹配原则

    写在前面:我在上大学的时候就听说过数据库的最左匹配原则,当时是通过各大博客论坛了解的,但是这些博客的局限性在于它们对最左匹配原则的描述就像一些数学定义一样,往往都是列出123点,满足这123点就能匹配 ...

  7. mysql匹配数据结构_MySQL索引背后的数据结构及原理

    前两天经历了武汉一行腾讯面试,数据库索引是一个面试热点,在此搜集相关资料,以备学习之用. 下面是一位牛人写得关于数据库索引的精品之作,因为很好,不敢修饰,转载至此与博友共享. 本文以MySQL数据库为 ...

  8. mysql 优化设计库_MySQL 数据库最优化设计原则

    规则1:一般情况可以选择MyISAM存储引擎,如果需要事务支持必须使用InnoDB存储引擎. 注意:MyISAM存储引擎 B-tree索引有一个很大的限制:参与一个索引的所有字段的长度之和不能超过10 ...

  9. mysql傻瓜教程_mysql索引的使用傻瓜教程_MySQL

    bitsCN.com mysql教程:索引的使用 1. 索引(index)是帮助MySQL高效获取数据的数据结构. 它对于高性能非常关键,但人们通常会忘记或误解它. 索引在数据越大的时候越重要.规模小 ...

最新文章

  1. 2022-2028年中国改性尼龙行业市场全景评估及产业前景规划报告
  2. 在互联网圈混,怎么能不知道这9个Java方向公众号
  3. 10-9-堆排序-内部排序-第10章-《数据结构》课本源码-严蔚敏吴伟民版
  4. leetcode1337. 方阵中战斗力最弱的 K 行(优先队列)
  5. python程序员工作时间_黑马程序员:Python编程之时间和日期模块
  6. java random产生随机数_Random随机数
  7. 手动编译包含两个import自写类的java类。
  8. Android Graphic 架构
  9. DNN2(DotNetNuke2.0)的一些资源
  10. 创建Android Virtual Device
  11. 清微智能获近亿元天使轮融资,专注研发超低功耗芯片...
  12. Matlab2014的下载和安装激活过程
  13. 计算机组成原理-计算机硬件的基本组成
  14. 浙江大学黄杨思博计算机学院,浙江大学节能减排社会实践与科技竞赛成功-浙江大学本科生院.DOC...
  15. 计算机vfp知识要点,计算机二级考试VFP知识点:VisualFoxPro基础
  16. 15个经典面试问题及回答思路,挥泪整理面经
  17. 【Lintcode】1132. Valid Triangle Number
  18. java读取ppm图片,在Java中将PPM转换为JPG或BMP
  19. 淫欲的真相是什么呢?可能很多英雄豪杰都没有想到过
  20. turtle库画图单击鼠标获取坐标位置

热门文章

  1. 测试面试问道MySQL_Mysql精华总结,解决测试人员面试中碰到的一切Mysql问题(二)...
  2. 创造与魔法241服务器系统什么时候修好,《创造与魔法》数据互通,交流不愁 4月27日更新维护公告...
  3. linux内核启动文件系统,Linux启动过程中文件系统的加载
  4. web前端基础(14html里面的事件)
  5. apache-commons 常用工具类
  6. 日平均血糖与糖化血红蛋白对照关系
  7. arch linux 进入黑屏,无法从Arch Linux进入Beaglebone Black
  8. python读取linux内存_使用python获取CPU和内存信息(linux系统)
  9. 电芯容量在前期循环中容量增加_了解移动电源聚合物电芯,这篇文章就够了
  10. php yii框架连接数据库,Yii 框架使用数据库(databases)的方法示例