mysql not in 索引

PrimeTime生成.lib竟暗藏PG添加Bug 1. 确认原始库中是否包含PG引脚的定义。2. 查阅PrimeTime的write_lib命令文档,寻找相关选项。3. 在生成库时使用正确的选项,例如-include_pg_pins或类似参数。4. 验证生成的.lib文件是否包含pg_pin部分。 阅读详情

为解决cpu100问题, 首先查看了阿里云cpu与其他参数对比情况, 查看慢sql, 表结构相关索引都已经创建好了, 虽然存在问题, 但没有太大影响, 优化代码时发现语句中很多处都使用了not in (), 记得之前看过not in 与 != , <> , or 等等都会使索引失效, 因此试了一下将not in 改成in , 将数据直接填充到in () 中对比执行时间(在java业务逻辑层通过not in 数据获取in 中数据), 刚开始随意填入几条数据发现效果非常好, 从8秒缩减到0.15s, 用实际数据填充对比时发现并没有那么乐观, 多个not in 都转换为in 时, 执行时间延长了, 用EXPLAIN 查看语句不断的调试对比, 在这个过程当中发现了好多有趣的东西, not in 也会用到索引, 经过多次验证调试发现会因为显示的字段列的多少/类型, 数据量大小, 数据量占比不同从而影响索引的命中, 而多次验证的结果中符合索引基本不会命中not in 的数据字段, 在这其中还发现另一个非常有趣是现象, EXPLAIN 查看时, key中显示的索引并不在possible_keys当中, 查找了一下, 以相同字段开头的索引在查询过程中起作用的索引字段相同时, 会出现覆盖现象. 再有一个就是mysql 会将=字段排列在前, 其他相同级别例如多个 in () 会进行自主调整, 前后顺序并未影响复合索引的使用,都会命中, 这一点与我们所知的左优先顺序有点不一样
上述发现的有趣现象查找了一些相关资料显示mysql5.6是里程碑式的进步, 5.7在5.6的基础上同样有所提升, 在5.6版本之后 not in , != 等等这些也可以命中索引了, mysql 会进行自主优化, 总之哪个索引能过滤掉更多数据会使用那个索引, in () 中如果包含数据量过多当mysql认为不如全表扫描效率高时同样不会命中索引, 一句话: 谁行谁上不行就pass掉!
上述内容大多是自己编写sql语句进行调整测试后得到的结论, 如果有不对的地方欢迎指出, 共同进步, 加油

吐槽一下, 在处理服务器中的一些项目cpu100波动图与慢日志,看了看语句优化一下还是可以的,结合项目后发现就是个坑, 项目使用使用中sql语句where条件20多个, 优化的时候, 联合索引根本起不到啥作用, 不同请求参数sql也不一样, 洋洋洒洒将近200行的一条综合sql语句啊, 多表关联等等, 更过分的是几乎相同的sql语句被20个接口调用,部分接口底层调用的是同一个方法, 上层业务繁杂, 不敢动啊, 拆分sql, java分担的空间换时间搞不了, 没办法只能硬着头皮搞纯sql优化试一试. 接手外包项目就是在折磨自己啊, 要是再有点代码强迫症,疯了, 只能不断的告诫自己, 管不到别人,管好咱自己, 不管啥时候自己绝对不要这样的方式写业务代码和sql语句, 坑人坑己! 把非常复杂的业务逻辑用一条sql语句多关联几张表就编写出来, 我只能说很厉害, 但不管是后期维护优化还是业务扩展都非常麻烦甚至尾大不掉, 这样的复杂业务sql语句编写完如果有错误排查太难, 过个一个月自己还能想起来怎么改怎么写不?!

计算机视觉-全景图像拼接中的特征匹配与优化策略 本文深入探讨了计算机视觉中全景图像拼接的核心技术,重点解析了特征匹配后的关键优化策略。通过SIFT特征提取、RANSAC算法剔除误匹配,并结合APAP算法应对视差与鬼影问题,详细阐述了从基础对齐到无缝融合的完整流程,为开发者实现高质量全景拼接提供了实用指南。 阅读详情

相关推荐

从理论到实践:TRL去嵌入校准在国产矢量网络分析仪上的应用全解析

本文全面解析了TRL去嵌入校准技术在国产矢量网络分析仪上的应用实践,从核心算法到工程实现。详细介绍了TRL校准的数学原理、国产VNA的程控接口开发、校准件质量评估及测量不确定度控制策略,帮助工程师掌握高频器件测量的关键技术。

tech5的博客 1014

探索MySQL not in到底走索引吗?

探索MySQL not in到底走索引吗?实战总结

qq_36588424的博客 6844

OFDM基本原理

OFDM基础介绍,包括OFDM的核心思想,数学推导了OFDM信号的调制解调过程。

伊丽莎白的学习之路 8911

MySQL 使用not in条件就一定不走索引吗?答案是不一定!

文章目录数据准备结果检验 数据准备 建表语句 create table if not exists test_temp ( test_id int auto_increment primary key, field_1 varchar(20), field_2 varchar(20), field_3 bigint, status bigint, create_date date ); create index

weixin_38924697的博客 9504

基于单片机电能质量检测仪设计

*单片机设计介绍,基于单片机电能质量检测仪设计。

2201_75940997的博客 1206

倍福TC3 PLC高速采集实战:如何用PLC-Recorder实现0.24ms级时间戳同步

本文详细介绍了倍福TC3 PLC与PLC-Recorder实现0.24ms级时间戳同步的工程实践方案。通过硬件拓扑设计、时间源选择优化、报文结构封装及同步验证方法,为工业自动化领域的高精度数据采集提供了可靠解决方案,特别适用于精密装配、激光切割等微秒级同步要求的场景。

weixin_29193359的博客 373

MySQL not in不走索引

我整理的一些关于【MySQL,SQL】的项目学习资料(附讲解~~)和大家一起分享、学习一下:https://d.51cto.com/yOSbkRMySQL中“NOT IN”条件不使用索引的实现 在数据库中,MySQL的查询优化可以通过合理的索引来提升性能。但在某些情况下,比如使用“NOT IN”语句时,MySQL可能会选...

weixin_36307344的博客 624

混合示教长短时记忆网络的车辆轨迹预测研究

论文"混合示教长短时记忆网络的车辆轨迹预测研究"中数据处理及MTF-LSTM模型实现代码,模型在Pytorch框架下实现。

ColinFhz的博客 1448

MySQL查询效率优化:NOT IN、LEFT JOIN、IS NULL 和 NOT EXISTS 的细致比较与索引失效分析

在选择 MySQL 查询方式时,除了考虑查询语法本身的特点外,还需要考虑表的索引情况。因此,在实际开发中,需要综合考虑查询语法和索引的使用情况,选择合适的查询方式,以达到优化查询性能的目的。在这篇博客中,我们详细分析了 MySQL 中常见的查询方式,并结合具体示例和索引失效的情况进行了细致比较。这有助于读者深入理解查询性能优化的重要性,并学会选择合适的查询方式以提高查询效率。通过本文的分析,读者可以更加深入地了解 MySQL 查询方式的选择以及索引失效的影响,从而在实际应用中做出明智的决策,提高查询效率。

weixin_42279822的博客 1817

最大面积验证码通用解法

最大面积验证码、面积验证通用解法

九月镇灵将的博客 1044

低代码部署与管理——OpenClaw智能助手的应用部署与运维(2026技术版)

OpenClaw智能助手的低代码部署与管理平台采用分层架构设计,包含部署工具、环境管理、版本控制等核心模块,支持从开发到生产的全流程自动化部署。该系统通过Docker、Kubernetes等技术实现应用构建和部署,利用Terraform等工具管理多环境配置,并提供完善的监控运维能力。平台针对开发、测试、预生产和生产环境提供差异化配置,确保部署效率和运行可靠性。这种架构设计遵循自动化、可扩展性和安全性原则,显著提升了智能助手应用的部署效率和运维质量。

一键难忘的博客 319

MySQL not in 不走索引?胡扯

今天的文章是之前筹划的《程序员十万个为什么》[1] 系列文章。经常有面试题问到 MySQL not in 走索引吗?偶尔也会有同事说,千万别用 not in, 不走索引性能贼差,not in 性能好不好和对应的字段的区分度有关,那么这是真的吗?今天小匠就带大家深入了解一下这个问题,首先我们需要使用 explain 关键字,所以需要了解一下这个关键字。explain 即为执...

码匠笔记 5476

【立创EDA-PCB设计基础】4.模块化布局

本文对本专栏绘制的原理图进行模块化布局,首先进行预布局(将每个模块放一起),然后进行精细化布局(按照原理图来精细化布局)。

嵌入式阿齐Archie 3万+

mysql not in和索引_MySQL Index--NOT IN和不等于两类操作无法走索引?

经常被问,NOT IN和<>操作就无法走索引?真想只有一个:具体问题具体分析,没有前提的问题都是耍流氓。准备测试数据:##删除测试表DROPTABLEIFEXISTStb2001;##创建测试表CREATETABLE`tb2001`(`id`int(11)NOTNULLAUTO_INCREMENTPRIMARYKEY,`c1`int(11)DEFAUL...

weixin_33497944的博客 710

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

关于 mysql not in 是否走索引的问题, mysql版本5.7

mysql 语句中的 not in 是否会走索引,使用explain关键字测试mysql 5.7 发现not in 并不走索隐。

Wu_Shang001的博客 2万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

mysql in /not in 索引失效笔记

mysql in 取值范围过大,则不走索引; 图中,explain 结果 key值为空; 但是,in取值不大时,是可以走索引的; key值不为空; not in 不走索引; 图中key值为空;

生命不息,奋斗不止 2531

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

MySQL 索引失效场景详解:NOT IN、!=、IS NOT NULL 何时生效与失效

单列索引 +NOT IN!→ 索引必失效。联合索引 + 前面等值,后面否定 → 只命中前面等值部分。否定条件天生不适合索引(MySQL 优化器不喜欢)。OR 连接无索引字段 = 一边有索引,一边没索引 → 整条 SQL 索引直接失效!MySQL 的规则很简单:只要OR两边任意一个字段没有索引,整个WHERE条件就无法使用索引,直接全表扫描。OR 只要连接一个无索引字段 → 整条 SQL 索引直接失效,全表扫描!OR 想要生效 → 两边字段必须都有独立索引。

优快云博客技术,java高级工程师,业务层架构师,高级管理认证,毕业设计可以联系我 522

mysql not in is null 走索引吗

MySQL中“not in”和“is null”查询走索引吗? 在数据库查询中,索引是一种提高查询效率的重要手段。然而,并非所有的查询都可以利用索引来加速。本文将探讨在MySQL中,使用“not in”和“is null”查询时,是否能够利用索引。 索引的基本原理 在讨论“not in”和“is null”查询之前,我们先...

weixin_36537289的博客 202

MySQL关键字OR/IN/NOT IN/EXISTS/NOT EXISTS的区别

IN 和 OR 的区别: 如果in和or所在列有索引或者主键的话,or和in没啥差别,执行计划和执行时间都几乎一样。 如果in和or所在列没有 索引的话,性能差别就很大了。在没有索引的情况下,随着in或者or后面的数据量越多,in的效率不会有太大的下降,但是or会随着记录越多的话性能下降 非常厉害。 因此在给in和or的效率下定义的时候,应该再加上一个条件,就是所在的列是否有索引或者是否是主键。如果有索引或者主键性能没啥差别,如果没有索引,性能差别不是一点点! IN 和 EXISTS 的区别: EXISTS

不积跬步无以至千里 2179

【mysql】in和exists的区别,not in、not exists、left join的相互转换

在oracle中,int中数据集的大小超过1000会报错;在mysql中,超过1000不会报错,但也是有数据量限制的,应该是4mb,但不建议数据集超过1000,因为in是可以走索引的,但in中数据量过大索引就会失效exist + not exists 是全量数据,这点与in不同。

weixin_44823875的博客 3318

【MySQL-索引调优】12:In相关概念

SQL中IN与NOT IN操作符的使用差异及优化建议:IN操作符会被优化为多次等值匹配,可走索引但需避免数据量过大;NOT IN存在NULL值比较问题,会导致结果异常,建议改用NOT EXISTS替代;小范围过滤推荐使用IN,联合索引时结合等值条件,避免大IN列表和NOT IN子查询。对于子查询场景,优先考虑JOIN替代IN(SELECT...)写法。

Lemonyuki的博客 80

MySQL中的in,exists,not in,not exists查询过程对比及结论

MySQL优化之in,exists,not in,not exists的区别in与existsin查询过程结论:exists查询过程:结论:not in与not existsnot in查询过程:结论:not exists查询过程:结论: 首先我们使用两个用户表作为实例 insert into A (id,username) values (1,'张三'); insert into A (id,u...

weixin_45590949的博客 773

MySQL ‘IN‘ ‘IS NULL‘ ‘IS NOT NULL‘ 到底走不走索引

看了很多篇文章,关于走不走索引这个问题真是众说纷纭,不如自己实践一波来得准。 先说我的mysql版本为5.7; 再说结论:有时候走,有时候不走。这个基于MySQL自身的查询优化。 直接上例子! 准备工作: 首先创建一个students表,内含自增主键id,在name和school_id两列上建立多列索引,最后还有一个普通列age; CREATE TABLE `students` ( `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, `nam

学习即修行 8687

mysql中索引的优化问题

MySQL的数据引擎主要分为innorDB和MyIASM两种,两种引擎的数据库底层都是采用B+树进行数据存储.从一个树来讲,为了筛选数据,它每一层都需要进行比较,而对于设置有主键的表来说,它的主键就是树中各个节点.所以通过主键也就是索引筛选数据时,会通过逐层比较筛选出数据. IN查询破坏索引? 根据B+树的这个特性,不难推算出那些破坏索引的查询.就比方说in查询.不过mysql似乎是对in查询...

shenshaoming的博客 257

MySQL IN和NOT IN的效率对比,该用哪一个

效率对比:IN 2000 > NOT IN 200原因:IN 是正向狙击,能走索引、能缓存临时表;NOT IN 是反向排除,容易全表扫描,且极易被 NULL 陷害导致结果全空。行动指南:尽量避免使用 NOT IN,用 NOT EXISTS 或 LEFT JOIN … WHERE b.id IS NULL 来替代。下次再遇到类似的取舍,记住一句话:数据库最喜欢“告诉我你要什么(IN)”,最讨厌“告诉我你不要什么(NOT IN)”。

Java杂谈 411

【MySQL】索引失效问题总结

大家好,今天给大家总结一下索引失效的场景。有忽略的欢迎补充!

m0_74289770的博客 1801
上一篇: java mybatis org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.
下一篇: Springboot集成WebSocket与定时任务
Li_Chunxiao_
博客等级 码龄7年 4粉丝 27原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值