例如新增了一个联合索引 abc, 我写一条sql

select * from table1 where a=1 and b=2 and c=2;

这样3个字段都是可以使用联合索引的。3者调换任意位置,优化器都能匹配到,使用该索引。

select  * from table1 where a=1 and b<3 and c=2;

此时只要a和b字段能用到索引,因为b使用了范围查询,后面的c就无法使用。3者调换顺序是一样的效果,优化器会根据abc索引的顺序对sql条件进行排序再去查询。

select * from table1 where  a<1 and b=2 and c=2;

此时只要a字段才能使用索引。因为a使用了范围查询,后面的字段就不能使用索引。

select * from table1  where a=1 and c=2;

此时因为b字段不在条件内,索引只有a字段使用了索引。因为找到a之后,再往后找不到b字段,就此为止。

注: 无法使用索引的情况:

1.只要字段存在null值,索引都无法使用。

2.列上进行计算。

3.not in 和not  exists 不走索引。

4. like  '%xxx%' 不走索引。   like 'xxx%'可以使用索引。

5.  !=  和  <>  不使用索引

SQL执行过程:

from   ->   join  -> on ->  where ->   group by  ->  max(min) -> having -> select  -> distinct  -> order by   -> limit

查询SQL底层流程:

1.权限校验

2.查询缓存

3.分析器-》词法分析,提取关键字,判断是否存在语法错误,错误直接抛异常

4.优化器-》通过自己的算法,选取一个最优的方法,去执行sql。(例:联合索引,优化器会调整条件的顺序,就会使用索引)

5.权限检验

6.调用引擎接口,返回引擎查询的结果。

mysql联合索引不按顺序_mysql联合索引的使用以及sql执行的过程顺序相关推荐

  1. mysql表文件与结构_MySQL文件结构、逻辑架构及sql执行流程分析

    1.MySQL文件说明 1.1 MySQL文件夹文件 linux服务器上MySQL安装好之后都有如下文件: auto.cnf:每一个MySQL实例都有一个唯一ID 蓝色文件夹:表示数据库,每个数据库对 ...

  2. Mysql复习计划(一)- 字符集、文件系统和SQL执行流程

    Mysql复习计划(一)- 字符集.文件系统和SQL执行流程 前言 一. Mysql字符集 1.1 Mysql5.7和8.0的默认字符集 1.1.1 修改默认的字符集 1.1.2 修改已有库表的字符集 ...

  3. mysql复合索引使用场景_mysql复合索引(联合索引)的使用场景

    什么是联合索引? 联合索引又叫复合索引.对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分.例如索引是key index (a,b,c). 可以支 ...

  4. mysql 查找多组数据结构_MySql主要索引数据结构

    索引数据结构 1. 二叉搜索树(Binary Search Tree)二叉搜索树是每个节点最多有两个子节点的树,按照右侧子节点大于本节点,左侧子节点小于本节点的规律排列,可以用作搜索,结构如下图所示 ...

  5. mysql索引的方法_mysql查看索引方法

    查看mysql索引: 复制代码 代码示例: mysql> show index from tblname; mysql> show keys from tblname; mysql索引输出 ...

  6. mysql 覆盖索引 简书_mysql覆盖索引与回表

    select id,name where name='shenjian' select id,name,sex* where name='shenjian'* 多查询了一个属性,为何检索过程完全不同? ...

  7. mysql like 多个条件_MySQL高性能索引策略

    索引类型 从物理存储角度: 聚集索引 InnoDB 叶节点包含了完整的数据记录.这种索引叫做聚集索引.因为InnoDB的数据文件本身要按主键聚集,所以InnoDB要求表必须有主键(MyISAM可以没有 ...

  8. mysql数据库索引的作用_mysql数据库索引和引擎

    1. 数据库索引 1.1 索引作用 当我们在数据库表中查询数据时,若没有索引,会逐个遍历表格中的所有记录,表格中数据记录量大时很耗时.建立索引就像创建目录一样,直接通过索引找到数据存储位置,加快查找. ...

  9. mysql 索引与约束_MySQL之索引与约束条件

    字段约束 作用 顾名思义就是给字段加以限制 其保证数据库的完整性与一致性 通过约束条件防止数据库产生一些不必要的数据 保证数据库的正确性 相容性 安全性 null和not null mysql> ...

最新文章

  1. .Net 自定义应用程序配置
  2. (初学者)安装hadoop集群注意事项
  3. 有意思的onerror的用法
  4. 三本新书(包含新系列)隆重上市
  5. POJ - 1459 Power Network(网络流-最大流)
  6. AtCoder3950 [AGC022E] Median Replace(DFA + dp)
  7. 21天学通Visual.Basic pdf
  8. RINEX格式文件内容解读
  9. xhr的get和post请求的简单实现
  10. 数字电路之Verilog红绿灯设计
  11. LTE:RA-RNTI;T-CRNTI;C-RNTI
  12. java必备知识进阶
  13. android 陀螺仪简单使用,判读手机是否静止状态
  14. 【浅析STM32之GPIO寄存器(CRL/CRH)配置 】
  15. onload与ready方法的区别
  16. vue插件开发、文档书写、github发布、npm包发布一波流
  17. 报名信息填写完成! 您的报名号请牢记!
  18. http响应里如何设置图片名称和image格式
  19. qt中label画圆代表指示灯_使用qpaint和paintEvent在PYQT5中QLabel中包含的Pixmap上绘制圆...
  20. 条码打印软件如何添加英文格式日期

热门文章

  1. 深能源拟认购长城证券2.7亿股
  2. 【Linux系列】Linux下编译C/C++环境变量设置
  3. 靠“喂喂喂”来测试实时语音质量靠谱吗?
  4. php早午晚问候语_php 自动变换随机问候语的简单示例
  5. 音乐网站开发建设定制,手机版DJ音乐网站制作
  6. windowsmobile软件_聊一聊 quot;压缩解压quot; 软件那点事
  7. 1的平方加到n的平方公式, 1的立方加到n的立方公式
  8. java基础总结(十九)--JDK各个版本的区别
  9. 登录后网页无法连接服务器失败怎么办啊,网页登录服务器失败
  10. 测试音乐链接持续时间