当前位置: 首页 > ai >正文

MySQL索引失效常见场景总结

字段套函数索引失效

有索引的字段进行函数操作,那么这个SQL语句大概率不走这个索引的

因为索引是有序的,经过函数嵌套后的索引字段已经破坏了有序性

当查询条件对索引列使用函数时,数据库无法直接利用索引的有序性

如果还想让这个函数走索引,可以考虑使用函数创建索引,需要看存储引擎是否支持

隐式类型转换

有索引的字段在进行条件判断的时候,SQL语句数据类型如果没有对应上,会出现自动的类型转化

如: order_id字段是字符串类型,筛选order_id是不是等于6,此时,这个6就会发生一个隐式转化变成字符串6

本质上也是函数操作,就是套用了转换函数而已

所以原理和有索引的字段进行函数操作是一样的

隐式字符编码转换

这种情况是比较特殊的,常见的场景是当两个表的字符集使用的不一样,在进行表之间的连接查询的时候,MySQL会自动对连接字段进行字符集转化,此时就会导致索引失效、

本质上也是函数操作,就是套用了转化字符集的函数而已

所以原理和有索引的字段进行函数操作是一样的

范围查询会阻断后续列匹配

范围查询(如 >、LIKE、BETWEEN)会导致后续的索引“有序性”被破坏,后续列无法继续按索引顺序匹配。当然,第一个范围查询还是生效的,后续破坏有序性了,就不会再往下匹配了

举个例子

-- 索引 (A, B, C)

SELECT * FROM table WHERE A = 1 AND B >= 10 AND C = 20;

此时索引A、B字段索引生效,B是范围查询,所以阻断了后续列的匹配,C字段失效

http://www.xdnf.cn/news/15900.html

相关文章:

  • 线上问题排查之【CPU飙高100%】
  • [Ninja] 快速构建系统 | 字符串处理 | 0拷贝
  • JVM 类加载过程笔记
  • leetcode-sql-627变更性别
  • 计算机发展史:互联网时代的万物互联与全球变革
  • stm32mp157f-dk2安装镜像并且部署qt全流程
  • tcp的三次握手与四次挥手
  • Softhub软件下载站实战开发(二十):Docker部署全攻略
  • WPF——自定义ListBox
  • 注解 + AOP 的方式记录日志到 t_ops_sync_log 表
  • 使用相机不同曝光时间测试灯光闪烁频率及Ai解释
  • 宝塔访问lnmp项目,跳转不到项目根目录问题解决
  • 后训练(Post-training)语言模型
  • Linux system-timesyncd时间同步机制详解
  • Django模板系统
  • Oracle 数据库共享池与大池调优指南
  • RuoYi配置多数据源失效
  • 【烧脑算法】拓扑排序:从“依赖”到“序列”,理解题目中的先后逻辑
  • 虚拟电厂蓄势:源网荷储联动如何实现电力系统的 “智慧蝶变”?
  • 如何升级到macOS Tahoe:全面指南与实用步骤
  • 从一开始的网络攻防(六):php反序列化
  • 关于JavaWeb的总结笔记
  • 云原生周刊:K8s 中的后量子密码学
  • 【学习路线】C#企业级开发之路:从基础语法到云原生应用
  • docker 容器学习
  • zabbix企业级分布式监控环境部署
  • 【Prometheus+Grafana篇】监控通过Keepalived实现的MySQL HA高可用架构
  • 在翻译语义相似度和会议摘要相似度评估任务中 ,分类任务 回归任务 生成任务区别
  • 布局AI +文化新赛道,浙江省文化产业投资集团赴景联文科技调研交流
  • uniapp【uni-ui】【vue3】样式覆盖方式记录