sql优化中出现的索引合并问题(多条件查询时使用单索引还是联合索引)

较为深入的解析联合索引最左匹配原则 mysql最左匹配原则的一些分析 阅读详情

年前从深圳这边的公司离职了,然后回西安上周五新入职的新公司。然后入职的第一个任务居然是优化SQL。

有如下两条SQL,

select sum(silvers_num) from tb_video_cost_log where anchor_id = 205690298267862016 and consume_scene = 1;
select sum(silvers_num) from tb_video_cost_log where anchor_id = 205690298267862016  and consume_scene > 0 and consume_scene < 2;

其中tb_video_cost_log表的anchor_id字段和consume_scene字段都创建了单独索引。但是执行发现第一条居然达到3秒左右,而第二条执行仅仅0点几秒。并且查询出来的记过是一致的。

后来发现是索引合并的问题。这个问题更加帮助我了解单独索引和联合索引的区别。

比如select * from table where a = 1 and b = 2.当a,b都是单独索引时,那么查询的过程是将a=1的数据全部查出来,然后把b=2的数据全部查出来,然后再去交集。

但是如果 a和b的联合索引,那么查询过程就是将a=1的数据全部查出来,然后再查出来的这些数据中查询b=2的数据。效率会更高。所以建议多条件查询时,使用联合查询。

MySQL索引优化策略(二):多个索引是建立独立索引还是建联合索引? 通常会对多列索引缺乏理解,常见的错误是将很多列设置独立索引,或者是索引列使用错误的次序。 阅读详情

相关推荐

Vivado 2018.3 SDK烧写bin文件避坑指南:如何解决QSPI模式下的常见错误

本文深入解析了在Vivado 2018.3 SDK中为Zynq FPGA烧写QSPI Flash时遇到的常见问题,特别是启动模式为QSPI时出现的警告与失败。文章从Zynq启动机制入手,提供了修改FSBL代码以强制使用JTAG模式、调整硬件配置等核心解决方案,并分享了实战案例与最佳实践,帮助开发者高效避坑,确保bin文件烧写成功。

arduino9maker的博客 389

单个索引和组合索引(联合索引)谁效率高

首先我们创建第一张表为组合索引,如下所示: 第二种表为单列索引,如下所示: 创建完表之后我们开始

养歌的博客 2万+

科研人必备!用WisPaper搭建个人文献知识库的完整指南(附Zotero联动技巧)

本文详细介绍了如何利用WisPaper搭建高效的个人文献知识库,包括文件命名标准化、文件夹结构设计、语义搜索技巧及与Zotero的深度联动方法。通过智能标签系统和知识图谱功能,科研人员可以快速定位关键文献,提升研究效率。特别适合需要管理大量学术文献的研究者。

weixin_30823001的博客 266

慢 SQL 的定位和优化、索引失效的场景

如何做慢 SQL 优化? 首先用 explain 分析语句的执行计划,查看使用索引的情况,是不是查询没走索引,如果可以加索引解决,优先采用加索引解决。 分析语句,看看是否存在一些导致索引失效的用法,是否加载了额外的数据,是否加载了许多结果中并不需要的列,对语句进行分析以及优化。 如果对语句的优化已经无法进行,可以考虑表中的数据量是否太大,如果是的话可以进行垂直拆分或者水平拆分。 索引失效的场景 索引列是表达式的一部分时,会导致索引失效,比如 select id from table where id

dl674756321的博客 541

svn 分支(branch)和标签(tag)管理

svn的分支管理

caohongxing的博客 3万+

python123题目——个税计算器

类型:简单分支。

m0_62488776的博客 5802

SQL中联合索引和普通索引

SQL中联合索引和普通索引 解释: 1、联合索引:就是创建一个索引,索引中包含多个列。 2、普通索引:即单个索引,一个索引包含一个列。 区别: 联合索引中列的顺序非常重要,从左原则。a,ab,ba,abc。 单个索引:一个一个起作用,也就是说有三个单个索引,哪个条件查询在前哪个起作用,其他不起作用。 结论: 一般来说,列表搜索需要多个列查询,此时就可以使用联合索引,都是and的关系。 什么时候需要创建索引: 1、where条件会经常出现的,并且当前表的数量比较大。 2、where条件中是用and而非or的时

Annie_Mint 4125

centos8 安装新版bind9源码

bind一直在更新,使用了比较多的新架构 本文记录新版本的bind怎么安装,以及其依赖库的安装 1. 在https://www.isc.org/download/ 下载最新stable版本bind,本文以bind-9.17.9.tar.xz为例。将软件传到/root目录下。 也可以到https://ftp.isc.org/isc/bind9/ 下载更多历史版本 2. 安装基本的依赖库,像gcc、amake等 3. 需要安装libuv库,但直接用yum时可能安装不全 建议使用源码安装,需要安..

linggang_123的博客 2538

mysql创建多个联合索引吗_高性能索引油画策略(二):多个索引是独立建立索引还是建联合索引?...

通常会对多列索引缺乏理解,常见的错误是将很多列设置独立索引,或者是索引列使用错误的次序。我们在下一篇讨论索引列次序的问题,首先看一下多列独立索引的情况,以下面的表结构为例:CREATE TABLE test (c1 INT,c2 INT,c3 INT,KEY(c1),KEY(c2),KEY(c3),);使用这种索引策略通常是一些权威的建议(例如在WHERE条件中用到的条件列增加索引)的结果。事实上...

weixin_34355977的博客 593

1104全部报表版本号-银监会报表

G4B_Ⅲ(a)X1《与非中央交易对手的衍生具交易对手信用风险违约风险计算表(现期风险暴露法)(第一档)》G4B_Ⅲ(b)X1《与非中央交易对手的证券融资交易对手信用风险违约风险计算表(权重法)(第一档)》G4B_Ⅲ(a1)X2《与非中央交易对手的衍生具交易对手信用风险违约风险计算表(标准法)(第二档)》Ⅲ(a)X2《与非中央交易对手的衍生具交易对手信用风险违约风险计算表(现期风险暴露法)(第二档)》Ⅲ(a1)X1《与非中央交易对手的衍生具交易对手信用风险违约风险计算表(标准法)(第一档)》

数字化老司机 6286

小目标检测难题终结:YOLOv11 + 注意力机制,精度直接拉满

如果你在实操中遇到精度提升不明显或速度下降过多的问题,不妨尝试调整注意力模块的类型(如替换为CA)或插入层级,或针对性优化小目标的数据集增强策略。记住,小目标检测的核心是“特征强化与空间定位”,只要结合业务场景灵活调整注意力模块的组合,你也能让YOLOv11在小目标识别任务中脱颖而出。接下来,我们从模块选型到代码落地,一步步带你打造“小目标检测专精版”YOLOv11,真正帮你解决工业场景中(如安防、质检)的小目标识别痛点。在城市安防场景中,改进后的YOLOv11对远处行人、车辆(小目标)的识别准确率提升。

m0_64661770的博客 199

联合索引全解析:一棵树,撑起查询的半边天

联合索引并非简单的字段拼接,而是 MySQL 中强大且高效的查询利器。本文从 B+ 树结构讲起,深入剖析联合索引的组织方式、最左前缀原则及其在执行计划中的优化效果。结合真实案例,展示它如何提升查询效率、减少回表、支持覆盖查询与索引下推。文章还指出常见设计误区,帮助读者构建系统的索引优化思维。掌握联合索引,让你在面对复杂查询时更从容。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 12万+

下采样新突破!ADown模块让YOLOv11多尺度特征提取更精准

ADown 凭借可编程梯度信息与多分支特征聚合的创新设计,打破了传统下采样在特征保留上的固有局限。本教程从原理到代码实现,再到工业场景适配,完整呈现了其在 YOLOv11 中的集成路径。只需简单新增模块脚本并修改配置文件,你的目标检测模型就能在多尺度特征捕捉能力上实现跨越式提升——无论是学术研究中的小目标检测突破,还是工业场景下的复杂多尺度任务落地,ADown 都能成为你攻克下采样瓶颈的利器。现在就动手尝试,让你的检测模型在下一代下采样技术的创新中再上一个台阶吧。

know_F0727的博客 524

【MySQL精通之路】SQL优化(1)-查询优化(3)-索引合并

Index Merge访问方法检索具有的行,并将其结果合并为一个。博主PS。也就是说数据库在where条件查询数据时,如果a条件查询完成后,a条件过滤出的主键去聚簇索引查找数据,回表查询。b条件,c条件同理。最后在通过条件之间是and还是or对结果进行过滤,索引合并后,就提前做这个操作了。先把二级索引上过滤出的主键,看是and还是or取交集,并集,或差集,得出过滤后的主键,再用过滤后的主键进行回表查询,大大减少回表次数。此查询,而不合并。合并可以生成其基础扫描的或。博主PS。

Anakki的博客 1392

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

MySQL索引合并Index Merge 一条SQL使用多个索引情况分析,以及索引合并失效情况

MySQL在5.0版本加入了索引合并优化(Index Merge),索引合并可以同时查询多个索引的范围扫描,并将其结果合并为一个。索引合并只可以合并来自单个表的索引扫描,而不支持跨多个表的扫描。合并可以生成其基础扫描的并集(unions)、交集(intersections)或交集的并集(unions-of-intersections)。

xzh_blog 4270

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

MySQL索引优化总结

前言:相信大家都知道索引可以大大提高MySQL的检索速度,但是真正在平时工作中写SQL,真的会考虑到这条SQL如何能够用上索引提升执行效率?本篇博客详细的介绍了索引优化的20个原则,只要在工作中能够随时应用到,相信你写出的SQL能够命中索引,效率杠杠的。 一、索引的分类 1.1、普通索引、主键索引和唯一索引 1.2、聚集索引和非聚集索引 1.3、联合索引最左匹配原则 1.4、索引覆盖和回表 1.5、前缀索引 1.6、索引合并 1.7、索引下推 二、索引优化规则 查询的条...

何哥的博客 1万+

MySQL必知之SQL执行原理(一)——单表访问之索引合并

MySQL在一般情况下执行一个查询时最多只会用到单个二级索引,但存在特殊情况,在这些特殊情况下,也可能在一个查询中使用到多个二级索引,MySQL中这种使用多个索引来完成一次查询的执行方案称之为索引合并/index merge,具体的索引合并算法有三种。

weixin_47088026的博客 795

MySQL 索引及SQL优化

MySQL 索引设计及失效情况,SQL优化

青竹暖回阳的博客 2318

MySQL优化书写高质量sql语句

1. 查询SQL尽量不要使用全查 select *,而是 select + 具体字段。 反例: select * from student; 正例: select id,name, age from student; 理由: 只取需要的字段,可以节省资源、减少CPU和IO以及网络开销。 select * 进行查询时,无法使用到覆盖索引,就会造成回表查询。 使用具体字段可以减少表结构变动带来的影响。 2. 使用预编译语句进行数据库操作 理由: 预编译语句可以重复使用计划,减少SQL编译所需要

Java小皮孩 1万+

复杂sql分析 以及 索引合并

简单的sql语句我们很简单的就可以分析出来它的执行计划,但是复杂的sql呢。例如这条语句很难分析出来,遇到这样的语句怎么办呢,怎么分析它的范围匹配区间呢?首先我们在为某个索引确定范围区间的时候只需要把用不到相关索引的搜索条件替换成true。之所以把用不到索引的搜索条件替换为true,是因为我们呢不打算使用这些条件进行在该索引上进行过滤,所以不管索引的记录满不满足这些条件,我们都把他们选取出来,带到之后徽标的时候再使用他们过滤。

zyjzyjjyzjyz的博客 1512

SQL联合索引

联合索引是数据库查询优化的利器,通过多字段组合索引实现高效查询。其核心原理是B+树按最左前缀递进排序,支持多条件查询和覆盖索引。最左前缀匹配规则决定了索引是否生效,范围查询会阻断后续字段使用。联合索引的优势在于一次处理多条件查询、避免回表及优化排序分组。设计时应将区分度高的字段放前面,包含所有查询条件,并避免范围查询阻断。合理使用联合索引可大幅提升数据库查询性能,是高效查询的关键支撑。

weixin_44355078的博客 607

MySQL的索引与SQL优化

本篇文章可以帮助你了解MySQL的索引是什么,了解SQL如何优化,快速定位要优化的SQL

qq_46863837的博客 1137

如何优雅地优化慢SQL:从SQL语句、索引和其他角度全面解析

数据库的性能直接影响到系统的响应速度和用户体验。许多应用程序会因为慢SQL而变得缓慢,导致系统资源被过度占用。慢SQL的出现,往往不仅是因为I/O问题,还有其他性能瓶颈如CPU占用、内存不足、锁竞争等。本文将深入探讨如何通过优化SQL语句、合理使用索引,以及其他系统层面的策略,全面提升SQL查询的性能,帮助大家避免常见的慢SQL问题。通过合理的SQL语句优化、索引优化以及其他系统级的调整,可以大大提升数据库的查询效率,降低系统资源的占用。

weixin_41004518的博客 2024

mysql优化十一:慢查询使用和索引合并

慢查询使用和索引合并 慢查询 慢查询配置 慢查询日志,就是查询花费大量时间的日志,是指mysql记录所有执行超过 long_query_time参数设定的时间阈值的SQL语句的日志。该日志能为SQL语句的优化带 来很好的帮助。默认情况下,慢查询日志是关闭的,要使用慢查询日志功能,首先要开启慢查询日志功能。 SHOW VARIABLES like 'slow_query_log'; 开启慢sql日志 SET GLOBAL slow_query_log=1; 开启慢sql日志后,还需要设置一个慢的阀值,mys

admin522043032的博客 660
上一篇: layui获取table中的checkbox选中的值
下一篇: rabbitmq监听队列中的消息数量
若往夕之
博客等级 码龄9年 20粉丝 82原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值