• 技术文章 >数据库 >mysql教程

    不要再误解MySQL in的用法了!

    藏色散人藏色散人2022-11-04 16:45:44转载217

    背景:群内某小伙伴说 in 走不走索引是跟 in 里面的字符串多少有关系,超过多少字符串长度后,就不会走索引。

    实际上,这种认知是错误的, 大家都被不少转载的文章给欺骗了!!!

    真正影响 in 走不走索引的取决于 in 里面符合条件的数据占比多少,从而影响 mysql 是否走索引!

    之前我测试是符合 in 的数据超过 40%(这个阀值不一定是 40%,只是之前本人测试是 40% 左右会不走索引,这个也受 mysql 版本影响)之后,就开始走全表,不走索引

    实践:

    图 1:

    2953be127277bf64a87029556422a67.jpg

    php入门到就业线上直播课:进入学习

    图 2:

    eab81a25f8c114b8c5d86295d9b64d8.jpg

    图 3:

    dbe61d2f9920743e2392587b8d82f6e.jpg

    图 4:

    28c5d8fbe35c4f95089d08d7fa8785a.jpg

    图 5:

    7d1afa7c4d815ecf0174d238c905de1.jpg

    如上图所示,当不考虑回表影响、覆盖索引的情况下,in 中符合数据占整表数据较多的时候,会开始走全表扫描,不走索引。

    另外特别说明

    1. 当 in 单个值的时候,mysql 会自动优化为 = ,故还是会走索引

    2. 当 in 和 select 的列为同个的时候,由于不需要走回表的情况下,会走覆盖索引

    推荐学习:《MySQL视频教程

    以上就是不要再误解MySQL in的用法了!的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:learnku,如有侵犯,请联系admin@php.cn删除

    千万级数据并发解决方案(理论+实战):点击学习

    Mysql单表千万级数据量的查询优化与性能分析

    Mysql主从原理及其在高并发系统中的应用

    专题推荐:mysql
    上一篇:简单聊聊MySQL中join查询 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• mysql中delete in子查询不走索引问题分析• MySQL单列索引和联合索引总结• 一文搞懂MySQL索引下推• php怎么将对象转为索引数组• 聊聊MySQL全文索引怎么解决like模糊匹配查询慢
    1/1

    PHP中文网