mysql 索引失效case 总结

MySQL CASE WHEN实战:分类统计、行转列与性能优化全解析 在SQL查询中,条件逻辑是数据处理的核心要素,而CASE WHEN则是实现条件判断最灵活的工具之一。它通过顺序匹配规则,将复杂业务口径转化为清晰的分支表达式,常被用于数据汇总、分类统计与报表透视。借助CASE WHEN配合聚合函数,可以在一次扫描中完成多口径指标计算,避免多次子查询带来的性能损耗,同时还能将流水明细横向扩展为宽表,便于趋势分析与可视化展示。在实际工程中,CASE WHEN的使用也需警惕性能红线:在WHERE中滥用易导致索引失效,在THEN中嵌入子查询可能引发逐行查询风暴。掌握其语法细节、执行 阅读详情

日期类型可以直接和string格式的字符串比较

select * from xxx where event_time>'2018-06-02' 可以使用索引, mysql默认会把后面的字符串转成date类型。可以使用between and

select * from xxx where date(event_time)>'2018-06-02'   不能使用索引

如果时间戳日期和时间都要比较, 最好使用两个字段保存这个时间戳, 这样可以利用索引

select * from xxx where event_time>1239237428734; --  使用错误, 不能这么用。可以使用from_unixtime()将数字转成日期类型

 

 

 将date和time合并成一个datetime

select str_to_date(concat(ICDate,' ',ICTime),'%m/%d/%y %h:%i:%s %s')   from XXXX

 

参考: https://stackoverflow.com/questions/2758486/mysql-compare-date-string-with-string-from-datetime-field

 

 

其他索引总结:

where条件等号两边字段类型不同,不走索引

like 'XXX%' 走索引, '%XXX%'不走索引

对字段进行函数运算不走索引

组合索引 只使用后面的字段不走索引,使用前后的字段走索引. 第一个字段有参于(而且字段类型匹配 没有函数运算),那么会走索引, 第一个字段可以在sql中的任意位置

 组合索引遇到第一个不等值条件 即中断后面字段使用索引

 字段类型不匹配,不走索引

 

 示例:

name varchar, addr varchar, age int。 创建组合索引为name + addr + age

select * from t_user where name like '123%' and age>19;  走索引 type=range

select * from t_user where age>19 and name like '123%' ;  走索引 type=range

select * from t_user where name =123 不走索引 type=all

select * from t_user where name='123' 走索引 type=ref

select * from t_user where addr like '上城%' and age>30; 不走索引 type=all

 

explain 是否使用了索引

type=ALL是全表扫描

只要不是ALL, 都能使用索引,只是使用索引的方式不同,性能也有差异==>依次从好到差:system,const,eq_ref,ref,fulltext,ref_or_null,unique_subquery,index_subquery,range,index_merge,index,ALL

关于explain各个字段的解释:https://www.cnblogs.com/david97/p/8072164.html

 

索引不是越多越好, 两个index进行merge有时还不如只使用一个index

组合索引创建的依据:select distinct(xxx)/count(*) 值越大说明区分度越高 组合索引的价值越高 

什么时候创建组合索引?  单列上查询出来的数据量都很大,但是两个组合查询的结果很小 ,此时创建组合索引就比较有意义

 (原始的离线度都小,组合的离散度会大???)    0.8*0.8=0.64       0.8*0.5=0.4    如果整体的数据量级别很大,也有点效果

 

 

索引的类型

 BTREE的时间复杂度: https://blog.youkuaiyun.com/weixin_38399962/article/details/79409118

 

orderby 是否使用索引

https://my.oschina.net/u/912810/blog/325177

orderby用到的索引和where中的索引如果一致, 可以提升不少性能

 

 

字符类型的索引需要指定长度

ALTER TABLE t_yyy ADD INDEX `xxx` (`request_type` ASC, `request_param`(15) ASC);

 

转载于:https://www.cnblogs.com/yszzu/p/9255769.html

MySQL条件判断函数实战:IF、CASE、NULLIF等核心用法与性能优化 在数据库查询与数据处理中,条件逻辑判断是构建复杂业务规则的核心基础。其原理是通过在SQL层面嵌入程序化判断,实现对数据的动态筛选、转换与计算,从而将业务逻辑下推至数据库引擎,显著提升处理效率并简化应用层代码。这一技术对于数据清洗、报表生成、动态聚合统计等场景具有极高价值,能够优雅处理空值、异常值及多分支业务规则。本文将深入解析MySQL中IF()、CASE、NULLIF()等关键函数,通过实际案例探讨其在**数据清洗**与**动态聚合**中的高级应用,并揭示常见的性能陷阱与优化方案,帮助开发者编写高效、健壮 阅读详情

相关推荐

MySQL CASE WHEN 详解:从基础语法到行转列与性能优化

在数据库开发与数据分析工作中,SQL 查询是日常高频操作,而条件逻辑处理更是其中的核心能力。如何根据业务规则动态生成字段值、完成复杂统计,是每个开发者绕不开的课题。CASE WHEN 作为 SQL 标准中的条件表达式,提供了在查询结果集中进行分支判断的简洁方案,既支持简单的等值映射,也能通过搜索表达式处理范围与复合条件。掌握 CASE WHEN 的底层匹配原理,能够帮助开发者高效完成枚举值翻译、数据分段打标、行转列汇总、自定义排序以及批量更新等典型场景。同时,在实际工程中还需注意与索引、NULL 值处理、数

weixin_33404102的博客 73

【示例】MySQL-不同case下索引的使用分析

本文主要讲述不同SQL语句下,索引的生效情况。关于索引的前置知识,本文不再讲述。

HMTeen 640

MySQL数据汇总利器:CASE WHEN从条件计数到行转列实战

在数据分析与报表开发中,SQL聚合查询是必备技能。MySQL提供了强大的分组与条件分支能力,其中CASE WHEN可以在聚合过程中实现行内分流,对数据按业务规则进行条件计数、金额分桶与行转列透视。理解SQL执行顺序(WHERE→GROUP BY→SELECT)是正确使用CASE WHEN的前提,它能在保留原始行数据的同时输出多维度统计量,显著提升报表开发的灵活性和准确性。本文从订单数据汇总场景出发,深入讲解CASE WHEN在条件计数、比率计算、金额分桶和透视表构建中的实战用法,并分享常见的数据翻倍、类型陷

weixin_31102231的博客 250

mysql 的运用:case函数,子查询,like和regexp,创建索引,视图

1,case函数, select* case when 条件1 then(输出1) when 条件2 then(输出2) when 条件3 then(输出3) from 表名; 下面这张里面的命令没有加 as mojor 就不是很好看。 2,查询最大值,这里查询语句是错误的,不能这样查询,有两个显示标题,max(price) 它会从最上面开始比较,不会在全部...

49天的博客 1765

MySQL CASE 用法详解:从语法到行转列、自定义排序实战

在数据库开发中,条件逻辑是SQL查询与数据处理的核心能力之一。无论是报表统计、数据清洗,还是业务规则映射,掌握灵活的条件表达式都至关重要。MySQL中的CASE表达式作为标准SQL语法,提供了简单CASE与搜索CASE两种写法,能够实现等值匹配、区间判断、多条件组合等复杂逻辑。利用CASE结合聚合函数,可以轻松完成行转列、分段统计等报表需求;在ORDER BY中借助CASE可实现自定义排序;在UPDATE语句中使用CASE则能一次更新多字段,保证原子性。合理使用CASE还能优化SQL性能,避免索引失效。本文

weixin_31188927的博客 227

MySQL CASE WHEN 用法详解:从条件判断到复杂查询优化

在数据库查询中,常常会遇到需要根据字段值进行条件转换的场景,例如将数字状态码映射为业务文案,或将明细数据按规则分组。SQL 作为数据操作的核心语言,其条件逻辑表达能力直接影响查询效率与可读性。CASE WHEN 是 MySQL 中实现行级条件判断的关键语法,支持等值、范围、模糊匹配等多种条件,比 IF() 函数更灵活,能够与聚合函数结合完成条件统计、行转列、自定义排序等高级操作。理解其求值顺序、NULL 处理与类型一致性,可避免隐性错误,同时通过合理的索引配合与查询优化,能在大数据量下保持良好的性能。从基础

weixin_33462167的博客 265

where 中使用 case when 无法使用索引

1.版本 1)操作系统 #cat /proc/version Linux version 4.14.76-1.el7.rx.x86_64 (root@8dfc8db5e7914181ad0cf0484d9be73a) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC)) #1 SMP Thu Oct 18 09:52:06 +06 2018 2)mysql数据库版本 > select version(); +-----------+ | ve

渔夫数据库笔记 3888

MySQL CASE WHEN实战指南:从语法到行转列、批量更新的完整用法

SQL中的条件逻辑常被用来在查询中实现分支判断,而CASE WHEN作为标准SQL表达式,能在数据库内部完成复杂的条件映射与计算,从而避免将大量数据拉回应用层逐行处理。它不仅可以做等值判断,还能配合SUM、COUNT等聚合函数实现条件统计与行转列,甚至可用于UPDATE批量赋值、ORDER BY自定义排序等场景,是提升数据查询与开发效率的利器。结合MySQL实践,系统梳理CASE WHEN的两种语法、典型用法及性能注意事项,帮助开发者在实际业务中更高效地完成数据处理。

weixin_32430941的博客 238

MySQL开窗、CASE WHEN以及CTE的使用和理解

MySQL开窗、CASE WHEN以及CTE的使用和理解一、开窗函数什么时候适合用开窗函数:1、用法分类2、over()的使用3、partition by 的使用4、排序函数5、windows frames 自定义窗口6、默认的 window frames7、CTE表达式8、分析函数lead( x [, y] [, z] ) over( )lag(x [, y] [, z] ) over( )first_value( x ) over( )last_value( x ) over( )nth_val

qq_15994257的博客 1854

MySQL CASE表达式详解:语法、行转列、聚合与性能优化实践

SQL查询中,经常需要将字段值按业务口径进行条件映射,比如状态码转文字、金额分档统计等。CASE表达式作为SQL内置的if-else,能够在SELECT、WHERE、ORDER BY等子句中动态生成所需结果,是数据分析与报表开发的高频利器。本文从简单CASE与搜索CASE的语法差异入手,剖析其短路执行逻辑与NULL比较陷阱,进一步以行转列透视和条件聚合(COUNT/SUM/AVG)为例展示CASE的典型应用场景。同时结合索引失效、类型一致性、ELSE兜底等实战案例,讨论CASE在性能优化和工程实践中的注意事

weixin_34116482的博客 237

2025.1.16——五、LoveSQL1 sqlmap文件类|万能密码

题目来源:BUUCTF[极客大挑战2019]LoveSQL1。

2402_87387800的博客 1066

case when中的条件不能用上索引

今日在对一报表数据源作优化时无论任何都不能让其走索引.数据源部分语句如下:select cityCode,servtype,1,channel,b.day_time, sum(case when to_number(...

3655

S32K3 MCAL配置 【MCU、PORT、DIO】

1、s32k3时钟源可由PLL, FXOSC, FIRC, SIRC, and SXOSC五种时钟源生成,可按照手册推荐配置。目标是在在S32K344板子上点亮红色LED灯,需要配置的有MCU、PORT、DIO模块。MCU最主要的是时钟配置,要翻看芯片手册,理解时钟树。1、通用配置中,没有什么特殊需求按照demo配置就好。1、配置MC_CGM mux 0 clocks时钟。1、外部晶振配置按照实际项目原理图进行配置。1、外部晶振配置,按照实际项目配置。1、PLL时钟按照手册进行配置。

weixin_43741076的博客 3243

Mysql索引失效的一些CASE, 工作中需要避免

转自:https://blog.youkuaiyun.com/wuseyukui/article/details/72312574 案例所用的表结构、索引、与数据如下: 索引失效与优化 1、全值匹配我最爱 2、最佳左前缀法则(带头索引不能死,中间索引不能断) 如果索引了多个列,要遵守最佳左前缀法则。指的是查询从索引的最左前列开始 并且 不跳过索引中的列。 正确的示例参考上图。 错误的...

蒜蓉粉丝蒸扇贝的专栏 1415

机器学习参数寻优:方法、实例与分析

机器学习模型的性能很大程度上依赖于其参数的选择。参数寻优(Hyperparameter Tuning)是提升模型表现的关键步骤之一。本文将详细介绍主流的参数寻优方法,包括网格搜索(Grid Search)、随机搜索(Random Search)、贝叶斯优化(Bayesian Optimization)、和超参数优化库(如Optuna和Hyperopt)等,并探讨它们的优缺点及适用场景。

甜盐的博客 2841

量子密钥分发(QKD)原理、工程实现与实战部署全解析

密钥分发是信息安全的核心基础,它解决了通信双方如何安全共享秘密密钥的难题。传统方法依赖于数学问题的计算复杂性,而量子密钥分发(QKD)则基于量子力学原理,为密钥分发提供了信息论安全的物理保障。其核心价值在于,利用量子不可克隆定理和测量坍缩原理,使得任何窃听行为都会被合法通信方检测到,从而在理论上实现无条件安全的密钥协商。这项技术特别适用于对安全性要求极高的场景,如金融数据同步、政务专网和电力系统保护。本文聚焦于量子保密通信,深入剖析了以BB84协议为代表的QKD工作原理,并详细拆解了包含单光子探测、偏振编码

weixin_29324401的博客 346

测一测自己的Sql能力之MYSQL的函数会造成索引失败

本片详细说明了MYSQL的函数会造成索引失败的注意要点,并给出具体操作实例,如有出入还望指正。欢迎大家关注【可为编程】,成长,进步,编程,技术、掌握更多知识!

永远热泪盈眶 坚持输出 747

聊一聊固态电池和钠离子电池新技术

总之,固态电池是一种“安全又高效的未来电池”,它的好处非常明显,但目前还处于研发阶段,离普及还有一段距离。未来,这两种技术可能会与锂离子电池并存,分别满足不同的市场需求。我尝试用最通俗易懂的语言将复杂的技术讲给大家听。钠离子电池和锂离子电池的工作原理很相似,但它用的是。固态电池和钠离子电池是两种正在研发和推广的。,它们有潜力解决现有锂离子电池的部分缺点。,而不是锂(Li)。

weixin_33324696的博客 3333

MySQL逻辑函数全解析:从CASE WHEN到空值处理的实践指南

在数据库查询与数据处理中,逻辑判断与条件分支是构建复杂业务逻辑的基石。无论是字段值翻译、分档统计,还是空值兜底,都离不开对判断表达式与取值函数的深入理解。MySQL提供了从IF、CASE WHEN到IFNULL、COALESCE、NULLIF的完整函数家族,它们各自适用于不同的场景:简单二值判断用IF,多条件分支用CASE WHEN,空值处理优先COALESCE。同时,三值逻辑中的NULL陷阱、NOT IN空结果问题、运算符优先级以及隐式类型转换,都是导致SQL结果异常的常见根源。合理运用逻辑函数不仅能提升

weixin_34098209的博客 180

ArXiv 2026 即插即用 | Transformer篇 | WeightFormer:告别二次复杂度!无注意力的线性时间 Transformer,泛化能力拉满

WeightFormer是一种创新的动态Transformer架构,其核心创新在于通过双动态算子(空间自适应动态卷积和双边激活动态线性)实现输入自适应的特征提取。该模块采用静态-动态权重融合机制和低秩预测技术,在仅增加5%参数量的情况下显著提升模型泛化能力。相比传统Transformer,WeightFormer在ImageNet-1K上提升2.3%精度,小样本任务提升12%,同时保持线性计算复杂度。模块可直接替换标准Transformer块,特别适合轻量级视觉任务,实现了精度与效率的平衡。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 129

【原理图PCB专题】Allegro模块化移动器件报...has the LOCKED property怎么解锁?

正常来说做好一个模块化,如果不需要再动,最好还是lock,防止不明白的工程师异动导致问题。如果复用布局设计时,因为有些器件和拓扑并不完全一致,那需要调整部分器件,被锁之后只能全选,无法修改。所以解开锁定后,就能正常编辑了。

一点硬件 2391

MySQL自定义排序全解析:FIELD、CASE WHEN、中文排序与性能调优

数据库查询中,行的返回顺序看似由ORDER BY决定,实则默认排序规则只能按数值大小或字符集码点机械比较,难以表达“待付款优先于已发货”这类业务优先级。MySQL自定义排序正是解决该问题的核心技巧:通过FIELD()将枚举值映射为排序权重,或用CASE WHEN构造虚拟排序列,把复杂规则翻译成可执行的排序键。这些方法在订单状态流转、CMS频道推荐、中文拼音排序、期号自然排序等场景中尤为实用,但表达式排序会迫使优化器放弃索引转向filesort,需要结合物化排序列、联合索引和减少排序行数来控制成本。本文系统梳

weixin_30512965的博客 124

针对小缺陷目标:在YOLOv11中引入小目标检测层

摘要: 针对YOLOv11在工业检测中漏检微小目标(如焊点气泡)的问题,研究发现深层特征下采样导致小目标信息丢失。通过在YOLOv11中增加P2检测层(4倍下采样)并融合浅层高分辨率特征,可显著提升小目标召回率。关键优化包括:调整模型结构、谨慎设计数据增强策略(减少MixUp、增加小目标粘贴)、重新分配损失权重(提升P2层权重)、优化推理速度(动态分辨率、通道裁剪)。同时强调数据质量的重要性,建议根据具体场景特性(目标尺寸、分布)定制方案,而非盲目调整模型。

as1225120794的博客 366

MySQL逻辑函数全解析:IF、CASE WHEN与空值处理实战

逻辑函数是SQL查询中实现条件判断与空值处理的核心工具。理解IF、IFNULL、NULLIF、COALESCE、CASE WHEN等函数的执行原理,能有效提升数据处理的灵活性与查询效率。在数据库开发与数据分析中,通过合理运用条件分支和空值处理,可以避免应用层重复代码,并保障数据计算的安全性。本文系统梳理MySQL逻辑函数的语法细节、典型应用场景及性能陷阱,帮助工程师写出更健壮、高效的SQL。

weixin_32308101的博客 209

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

MySQL COALESCE函数详解与应用实践

在数据库开发中,NULL值处理是常见的技术挑战。SQL标准中的COALESCE函数提供了一种优雅的解决方案,它通过返回参数列表中第一个非NULL值来简化NULL处理逻辑。从原理上看,COALESCE实现了短路求值特性,能有效提升查询性能。这一函数在数据展示默认值处理、多表JOIN字段选择和计算字段容错等场景中具有重要技术价值,特别是在电商价格体系、多语言系统等实际业务场景中表现突出。作为MySQL核心函数之一,COALESCE与IFNULL、CASE WHEN等替代方案相比,在语法简洁性和跨数据库兼容性方面

weixin_33860528的博客 452

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

MySQL CASE表达式完全指南:从基础语法到行转列与性能优化

在SQL开发中,条件判断是构建复杂查询的核心能力之一,而CASE表达式正是实现灵活条件逻辑的通用工具。它不仅能完成简单的等值匹配,还能处理范围判断、多条件组合等复杂场景,是数据清洗、报表统计和业务逻辑转换中的高频语法。理解CASE表达式的执行顺序与NULL处理机制,是避免统计口径出错的关键。在实战中,利用CASE可以实现高效的行转列操作、通过count(case when)完成多维度条件计数,也能结合聚合函数进行分组汇总与占比计算。此外,CASE在自定义排序、存储过程逻辑分支以及数据迁移场景中同样发挥着重要

weixin_28312391的博客 328

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

上一篇: 2021-03-06
下一篇: Socket心跳包机制
爬虫仔蛙
博客等级 码龄15年 62粉丝 185原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值