千家信息网

MySQL索引失效的原理是什么

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,这篇文章主要讲解了"MySQL索引失效的原理是什么",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"MySQL索引失效的原理是什么"吧!1、索引失效原因首
千家信息网最后更新 2025年02月01日MySQL索引失效的原理是什么

这篇文章主要讲解了"MySQL索引失效的原理是什么",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"MySQL索引失效的原理是什么"吧!

    1、索引失效原因

    首先看看哪些情况下,将会导致查找不能利用索引的有序性。

    假设一个表test中有a,b,c,d四个字段,c是主键。

    在a,b字段上建立联合索引(a,b):CREATE index idx_a_b on test(a,b); B+树联合索引.JPG

    可以得到的规律是:优先按a字段从小到大排序,a字段相等的按b字段从小到大排序;

    分析以下情况,索引是否会失效以及失效的原因:

    条件只包含b字段

    select * from test where  b=2;

    索引失效:

    显然,走的时候全文扫描,并没有使用索引。因为只看b字段的索引,是2,4,1,3,4,5,并不能利用索引的有序性快速定位。

    对a字段范围查询:

    select * from test where  a>1 and b=2;

    索引失效:

    可以看到,索引并没有完全失效,而是先利用索引定位到a的位置。因为这里的key_len是4,而联合索引的key_len是8。

    对a字段等值查询,b字段范围查询:

    索引失效:

    可以看到是using index并且key_len是8,也就是两个字段的索引都用到了,这也对应着联合索引排列的规律:a字段相同的情况下,b字段有序排列。

    以上几种情况可以总结为:不符合最左前缀匹配原则导致索引失效。

    最左匹配前缀保证可以利用到索引排序的有序性,而把等值查询放在前面,范围查询放在后面,是利用了[前缀字段相等的情况下,后面的索引字段有序]这个特性,是特殊意义下的最左前缀匹配原则。

    2、再来看看哪些情况会破坏索引的有序性。

    - 对索引字段做函数操作

    对索引字段做函数操作,比如y=f(x),并不能保证得到的y的值依然是有序的,在这种弄个情况下,优化器会放弃树的搜索功能,但是不排除优化器在发现该索引树比主键索引小很多的情况下,选择扫描这个索引。

    - 隐式类型转换

    在 MySQL 中,字符串和数字做比较的话,是将字符串转换成数字。隐式类型转换的本质是对索引字段使用了CAST()函数,原理同上。

    - 隐式字符编码转换

    字符串编码转换的本质是使用了CONVERT() 函数。

    感谢各位的阅读,以上就是"MySQL索引失效的原理是什么"的内容了,经过本文的学习后,相信大家对MySQL索引失效的原理是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

    索引 字段 情况 有序 原理 查询 函数 前缀 字符 有序性 联合 字符串 范围 学习 排序 从小到大 从小 内容 原则 原因 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 计算机网络技术就业前景如何专科 火绒安全服务器搭建 政府需要软件开发吗 电子商务数据库技术与应用 计算机网络技术和数控专业 数据库识别文件的函数 手机app软件开发价钱 电商基本数据库设计 搞软件开发前景 有关数据库的合规信息记录 方舟手游服务器如何设置人物等级 没文化能学软件开发吗 数据库定时备份策略 嘉兴信息网络技术常见问题 p2p网络安全性能评估 魔兽世界单机版当前无服务器可用 网络安全教育主题班会内容结束语 初中生学网络安全工程 数据库文件管理什么 未转变者可不可以不用服务器玩 虹口区品牌软件开发值多少钱 明日之后的服务器有多少个 软件开发商未适配您的机型 连接的数据库名称和密码 福建安全教育平台网络安全教育日 并发读取数据库出现问题 软件开发阶段使用的方法 安全型数据库的区别 怎么读取在线数据库 网络安全国际议程
    0