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> ...
最新文章
- 百度开源联邦学习框架 PaddleFL:简化大规模分布式集群部署
- 网站PC端跟移动端有哪些不同的区别所在?
- drawable自定义字体颜色
- STM32F7xx —— 内存管理
- linux自学_shell脚本for详解
- Raspberry Pi 学习笔记之一
- c 内存加载易语言dll,[求助]MemoryLoadLibrary 加载MFC 易语言 DLL 失败
- 山寨AirPods2020年出货量已达6亿副,是正版7倍,网友:怪不得满大街都是
- [Flink]Flink常用的DataStream转换算子
- 异步更新php数据库,ajax异步刷新实现更新数据库_jquery
- 9106w android7,三星n9106w官方原版固件rom刷机包_三星n9106w系统线刷包
- 黑客的google运用技巧
- Android反编译工具合集
- php微信零钱明细,微信钱包的收支记录明细在哪里查看,看完就明白了
- java项目编码问题解决
- 开放API接口整合多元办公能力,企业微信助IT企业打造高效办公平台
- 7-17 直角坐标->极坐标
- 微信公众号 php 导航,最新PHP微信公众号导航源码
- 为什么要用Modbus转MQTT网关?
- Linux常用命令——uname命令
热门文章
- python题库选择填空_大学计算机python选择填空题库与答案
- 要塞悬垂堡任务+要塞资源
- python 打印倒三角九九乘法表
- php mds函数,MDS分类- 血液病百科 - Powered by HDWiki!
- oracle的ords发消息流程图,oracle-ords
- [转载]十句话,见证人心,看透人性
- 2016年GitHub 排名前 100 的安卓、iOS项目简介(收藏)
- C语言----编写程序:对从键盘任意输入的字符串,将其中所有的大写字母改为小写字母,而所有小写字母改为大写字母
- 电动车公司Canoo陷危机:资金链面临断裂 与贾跃亭有渊源
- 军人的女友永远都是那个“傻丫头”