千家信息网

MySQL索引失效的原理是什么

发表于:2024-09-24 作者:千家信息网编辑
千家信息网最后更新 2024年09月24日,这篇文章主要讲解了"MySQL索引失效的原理是什么",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"MySQL索引失效的原理是什么"吧!1、索引失效原因首
千家信息网最后更新 2024年09月24日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安全错误 数据库的锁怎样保障安全 收款机无法连接到服务器 域管理服务器设置 奥迪斯服务器扶梯查看故障方法 e会计如何导入备份有数据库 oracle数据库中表列排序 山东博赛网络技术 足球经理意大利几级联赛数据库 江苏节能网络技术答疑解惑 四史大家讲网络安全 即时通讯软件开发立项报告 金蝶专业版软件版本数据库 数据库密码安全性 软件开发有限公司的股东 江北手机软件开发工程 各类网络技术工程 下列属于数据库设计内容的是 优摩登软件开发香港 大学计算机网络技术重点内容 网络安全政策及技术 北京嵌入式软件开发定做 德州的网络安全 武魂与服务器连接断开 黑龙江数据库空投箱销售厂家 百度服务器维修什么意思 钦州中院网络技术培训班 国产化数据库认证工程师 steam俄服服务器错误 网络安全产品销售待遇偏低 该如何进行计算机网络安全 河北华为服务器维修续保
    0