索引最左前缀原则

简介: 索引最左前缀原则

一个慢SQL优化

今天在观察慢sql统计的时候,发现了一个sql的平均耗时长,而且总的扫描行数大,分析对应表的DDL,发现此表中只有一个唯一索引index1(a,b,c),但是在查询条件中没有带上a字段,导致这个查询sql没有走索引,从而导致了全表扫描。这里涉及到一个索引最左前缀原则,我们来一起看一下。

联合索引的最左前缀原则

下述摘自https://blog.csdn.net/zzx125/article/details/79678770

通常我们在建立联合索引的时候,也就是对多个字段建立索引,mysql都会让我们选择索引的顺序,比如我们想在a,b,c三个字段上建立一个联合索引,我们可以选择自己想要的优先级,a、b、c,或者是b、a、c 或者是c、a、b等顺序。为什么数据库会让我们选择字段的顺序呢?不都是三个字段的联合索引么?这里就引出了数据库索引的最左前缀原理。

mysql建立多列索引(联合索引)有最左前缀的原则,即最左优先,如:

  • 如果有一个2列的索引(col1,col2),则已经对(col1)、(col1,col2)上建立了索引;
  • 如果有一个3列索引(col1,col2,col3),则已经对(col1)、(col1,col2)、(col1,col2,col3)上建立了索引;

比如:索引index1:(a,b,c)有三个字段,我们在使用sql语句来查询的时候,会发现很多情况下不按照我们想象的来走索引。

select * from table where c = '1' 这个sql语句是不会走index1索引的,select * from table where b =‘1’ and c ='2' 这个语句也不会走index1索引。

什么语句会走index1索引呢?

答案是:

select * from table where a = '1'

select * from table where a = '1' and b = ‘2’

select * from table where a = '1' and b = ‘2’ and c='3'

我们可以发现一个共同点,就是所有走索引index1的sql语句的查询条件里面都带有a字段,那么问题来了,index1的索引的最左边的列字段是a,是不是查询条件中包含a就会走索引呢?

select * from table where a = '1' and c= ‘2’这个sql语句了。

这也是最左前缀原理的一部分,索引index1:(a,b,c),只会走a、a,b、a,b,c 三种类型的查询,其实这里说的有一点问题,a,c也走,但是只走a字段索引,不会走c字段。

目录
相关文章
|
6月前
|
监控 搜索推荐 数据挖掘
优化报价与回款,驱动企业高效增长
在当今商业环境中,CRM系统成为企业提升销售效率与客户满意度的关键工具。通过优化产品报价流程,企业可实现快速准确报价、缩短周期并降低成本;优化回款周期则有助于实时跟踪进度、自动化提醒及数据分析预测,确保资金及时回笼。同时,CRM为管理层提供准确数据支持,促进跨部门协作,助力科学决策。实际案例如联想和海康威视均显著提升了销售效率与管理能力。总结来看,优化报价与回款流程是企业在竞争中取胜的核心竞争力。
|
存储 机器学习/深度学习 关系型数据库
mysql中char和varchar的区别
mysql中char和varchar的区别
378 1
|
消息中间件 算法 机器人
【ROS】如何让ROS中节点实现数据交换Ⅰ--ROS话题通信
比较常用的目前就这一些,之后的命令现用现学就好了
502 1
|
Web App开发 搜索推荐 Windows
一键搜索多个搜索引擎
一键搜索多个搜索引擎
578 0
|
网络协议 测试技术 Go
方法的调用和传参机制 | 学习笔记
快速学习方法的调用和传参机制
方法的调用和传参机制 | 学习笔记
|
缓存 算法 Java
【小家java】Java中Random ThreadLocalRandom 设置随机种子获取随机数精讲(下)
【小家java】Java中Random ThreadLocalRandom 设置随机种子获取随机数精讲(下)
|
机器学习/深度学习 人工智能
|
14天前
|
存储 关系型数据库 分布式数据库
PostgreSQL 18 发布,快来 PolarDB 尝鲜!
PostgreSQL 18 发布,PolarDB for PostgreSQL 全面兼容。新版本支持异步I/O、UUIDv7、虚拟生成列、逻辑复制增强及OAuth认证,显著提升性能与安全。PolarDB-PG 18 支持存算分离架构,融合海量弹性存储与极致计算性能,搭配丰富插件生态,为企业提供高效、稳定、灵活的云数据库解决方案,助力企业数字化转型如虎添翼!