mysql联合索引不按顺序_mysql联合索引的使用以及sql执行的过程顺序
例如新增了一个联合索引 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执行的过程顺序相关推荐
- mysql表文件与结构_MySQL文件结构、逻辑架构及sql执行流程分析
1.MySQL文件说明 1.1 MySQL文件夹文件 linux服务器上MySQL安装好之后都有如下文件: auto.cnf:每一个MySQL实例都有一个唯一ID 蓝色文件夹:表示数据库,每个数据库对 ...
- Mysql复习计划(一)- 字符集、文件系统和SQL执行流程
Mysql复习计划(一)- 字符集.文件系统和SQL执行流程 前言 一. Mysql字符集 1.1 Mysql5.7和8.0的默认字符集 1.1.1 修改默认的字符集 1.1.2 修改已有库表的字符集 ...
- mysql复合索引使用场景_mysql复合索引(联合索引)的使用场景
什么是联合索引? 联合索引又叫复合索引.对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分.例如索引是key index (a,b,c). 可以支 ...
- mysql 查找多组数据结构_MySql主要索引数据结构
索引数据结构 1. 二叉搜索树(Binary Search Tree)二叉搜索树是每个节点最多有两个子节点的树,按照右侧子节点大于本节点,左侧子节点小于本节点的规律排列,可以用作搜索,结构如下图所示 ...
- mysql索引的方法_mysql查看索引方法
查看mysql索引: 复制代码 代码示例: mysql> show index from tblname; mysql> show keys from tblname; mysql索引输出 ...
- mysql 覆盖索引 简书_mysql覆盖索引与回表
select id,name where name='shenjian' select id,name,sex* where name='shenjian'* 多查询了一个属性,为何检索过程完全不同? ...
- mysql like 多个条件_MySQL高性能索引策略
索引类型 从物理存储角度: 聚集索引 InnoDB 叶节点包含了完整的数据记录.这种索引叫做聚集索引.因为InnoDB的数据文件本身要按主键聚集,所以InnoDB要求表必须有主键(MyISAM可以没有 ...
- mysql数据库索引的作用_mysql数据库索引和引擎
1. 数据库索引 1.1 索引作用 当我们在数据库表中查询数据时,若没有索引,会逐个遍历表格中的所有记录,表格中数据记录量大时很耗时.建立索引就像创建目录一样,直接通过索引找到数据存储位置,加快查找. ...
- mysql 索引与约束_MySQL之索引与约束条件
字段约束 作用 顾名思义就是给字段加以限制 其保证数据库的完整性与一致性 通过约束条件防止数据库产生一些不必要的数据 保证数据库的正确性 相容性 安全性 null和not null mysql> ...
最新文章
- .Net 自定义应用程序配置
- (初学者)安装hadoop集群注意事项
- 有意思的onerror的用法
- 三本新书(包含新系列)隆重上市
- POJ - 1459 Power Network(网络流-最大流)
- AtCoder3950 [AGC022E] Median Replace(DFA + dp)
- 21天学通Visual.Basic pdf
- RINEX格式文件内容解读
- xhr的get和post请求的简单实现
- 数字电路之Verilog红绿灯设计
- LTE:RA-RNTI;T-CRNTI;C-RNTI
- java必备知识进阶
- android 陀螺仪简单使用,判读手机是否静止状态
- 【浅析STM32之GPIO寄存器(CRL/CRH)配置 】
- onload与ready方法的区别
- vue插件开发、文档书写、github发布、npm包发布一波流
- 报名信息填写完成! 您的报名号请牢记!
- http响应里如何设置图片名称和image格式
- qt中label画圆代表指示灯_使用qpaint和paintEvent在PYQT5中QLabel中包含的Pixmap上绘制圆...
- 条码打印软件如何添加英文格式日期
热门文章
- 深能源拟认购长城证券2.7亿股
- 【Linux系列】Linux下编译C/C++环境变量设置
- 靠“喂喂喂”来测试实时语音质量靠谱吗?
- php早午晚问候语_php 自动变换随机问候语的简单示例
- 音乐网站开发建设定制,手机版DJ音乐网站制作
- windowsmobile软件_聊一聊 quot;压缩解压quot; 软件那点事
- 1的平方加到n的平方公式, 1的立方加到n的立方公式
- java基础总结(十九)--JDK各个版本的区别
- 登录后网页无法连接服务器失败怎么办啊,网页登录服务器失败
- 测试音乐链接持续时间