例如新增了一个联合索引 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. 百度开源联邦学习框架 PaddleFL:简化大规模分布式集群部署
  2. 网站PC端跟移动端有哪些不同的区别所在?
  3. drawable自定义字体颜色
  4. STM32F7xx —— 内存管理
  5. linux自学_shell脚本for详解
  6. Raspberry Pi 学习笔记之一
  7. c 内存加载易语言dll,[求助]MemoryLoadLibrary 加载MFC 易语言 DLL 失败
  8. 山寨AirPods2020年出货量已达6亿副,是正版7倍,网友:怪不得满大街都是
  9. [Flink]Flink常用的DataStream转换算子
  10. 异步更新php数据库,ajax异步刷新实现更新数据库_jquery
  11. 9106w android7,三星n9106w官方原版固件rom刷机包_三星n9106w系统线刷包
  12. 黑客的google运用技巧
  13. Android反编译工具合集
  14. php微信零钱明细,微信钱包的收支记录明细在哪里查看,看完就明白了
  15. java项目编码问题解决
  16. 开放API接口整合多元办公能力,企业微信助IT企业打造高效办公平台
  17. 7-17 直角坐标->极坐标
  18. 微信公众号 php 导航,最新PHP微信公众号导航源码
  19. 为什么要用Modbus转MQTT网关?
  20. Linux常用命令——uname命令

热门文章

  1. python题库选择填空_大学计算机python选择填空题库与答案
  2. 要塞悬垂堡任务+要塞资源
  3. python 打印倒三角九九乘法表
  4. php mds函数,MDS分类- 血液病百科 - Powered by HDWiki!
  5. oracle的ords发消息流程图,oracle-ords
  6. [转载]十句话,见证人心,看透人性
  7. 2016年GitHub 排名前 100 的安卓、iOS项目简介(收藏)
  8. C语言----编写程序:对从键盘任意输入的字符串,将其中所有的大写字母改为小写字母,而所有小写字母改为大写字母
  9. 电动车公司Canoo陷危机:资金链面临断裂 与贾跃亭有渊源
  10. 军人的女友永远都是那个“傻丫头”