索引什么场景下会失效?

这篇具有很好参考价值的文章主要介绍了索引什么场景下会失效?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

我觉得索引失效只有两种情况
● 一种是,无法使用索引,用不上索引
● 还有一种是,没必要走索引,直接全表扫描(Type = All),把主键索引的叶子节点全部走一遍的效率(全表扫描),比走二级索引,然后再回表的效率高。
● 比如说,范围查询占比太大,超过了全表的30%(这里并不准确),官网是这么说的: a scan was used based on whether the best index spanned more than 30% of the table, but a fixed percentage no longer determines the choice between using an index or a scan. The optimizer now is more complex and bases its estimate on additional factors such as table size, number of rows, and I/O block size.优化器就会放弃使用索引,选择进行全表扫描
任何查询走不走所谓的索引都是看成本,毕竟我们的目的就是尽可能快的查询数据。怎么快,怎么来。
具体有哪些索引失效的场景?
● like “%xx” "%xx%”,这种左模糊查询或者左右模糊查询,就可能导致索引失效,当然也可能走索引,比如正好可以使用索引覆盖
● a = x or b = y,or 前后只要有一个字段不是索引字段,就会导致索引失效,如果两个字段都是索引字段,那么会走索引,这种情况就是索引合并
● 对索引列进行计算,或者使用函数,那么也会导致索引失效。
● 这里提一下,MySQL在遇到字符串和数字的比较,会自动将字符串转换成数字,然后再进行比较
● 对索引列进行隐式类型转换,比如索引字段是varchar类型的,你查询的时候输入的字段参数是整数类型的话,这里就会对字段进行类型转换,导致索引失效。
● 使用联合索引的时候,不符合最左前缀原则,就可能导致索引失效,当然也可能走索引,比如正好可以使用索引覆盖
● null:is null、is not null ;索引本身不对null值的数据做处理。理论上不要让字段为null,处理方法:建表的时候,字段强制不为null、字段设置默认值。文章来源地址https://www.toymoban.com/news/detail-454318.html

到了这里,关于索引什么场景下会失效?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 组合索引和单个索引的使用场景有什么不同

    组合索引和单个索引在数据库查询中具有不同的使用场景。下面是它们的主要区别和适用场景: 单个索引: 单个索引是在单个列上创建的索引,用于加快对该列的查询和排序操作。 适用于对单个列进行频繁的查询、排序或过滤操作的场景。 适用于查询条件涉及单个列的情况

    2024年02月08日
    浏览(47)
  • TCP 和 UDP 在哪些场景下会被使用?

    💂 个人网站:【海拥】【游戏大全】【神级源码资源网】 🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】 💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 在计算机网络中,TCP(传输控制协议)和UDP(用户数据报协议)是两种常见的传输层协

    2024年02月14日
    浏览(33)
  • mysql什么情况下会锁表

    在MySQL中,当对表进行写操作(如INSERT、UPDATE、DELETE)时,需要对相关的数据行加锁以确保数据的一致性和完整性。在某些情况下,MySQL需要锁定整个表而不是部分行,这种情况下会锁定整个表,导致其他会话不能访问表。 1.使用ALTER TABLE、TRUNCATE TABLE等语句对表进行结构性修

    2024年02月12日
    浏览(39)
  • 什么条件下会出现死锁,如何避免?

    死锁,简单来说就是两个或者两个以上的线程在执行过程中,去争夺同一个共享资源导致相互等待的现象。如果没有外部干预,线程会一直处于阻塞状态,无法往下执行。这样一直等待处于阻塞状态的线程,被称为死锁线程。 产生死锁需要同时满足以下四个条件: 第一个:

    2024年02月12日
    浏览(55)
  • MySQL回表是什么?哪些情况下会回表

    🏆作者简介,黑夜开发者,全栈领域新星创作者✌,CSDN博客专家,阿里云社区专家博主,2023年6月CSDN上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。 🏆本文已收录于PHP专栏:MySQL的100个知识点。 🎉欢迎 👍点赞✍评论⭐收藏 在MySQL数据库

    2024年02月11日
    浏览(37)
  • 【Unity细节】Unity中为什么镜头下会抖动

    👨‍💻个人主页 :@元宇宙-秩沅 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 秩沅 原创 😶‍🌫️收录于专栏 :unity细节和bug 😶‍🌫️优质专栏 ⭐【软件设计师高频考点暴击】 Unity中为什么镜头会抖动 相机相关的代码和移动相关的代码未在同一生命函数内,然而

    2024年02月03日
    浏览(54)
  • MySQL什么情况下会死锁,发生了死锁怎么处理呢?

    🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年6月CSDN上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。 🏆本文已收录于PHP专栏:MySQL的100个知识点。 🎉欢迎 👍点赞✍评论⭐收

    2024年02月08日
    浏览(35)
  • OSPF在什么情况下会进行Router ID的重新选取?

    你好,这里是网络技术联盟站,我是瑞哥。 在OSPF(Open Shortest Path First)协议中,Router ID是每个路由器在自治系统内的唯一标识符。它是一个32比特无符号整数,用于在OSPF网络中唯一标识一个路由器。 Router ID在OSPF中扮演着至关重要的角色,Router ID用于区分不同的路由器,确保

    2024年04月12日
    浏览(35)
  • 为什么我觉得Rust比C++复杂得多?

    Rust自学确实有一定门槛,很多具体问题解决起来搜索引擎也不太帮的上忙,会出现卡住的情况,卡的时间长了就放弃了。最近很多小伙伴找我,说想要一些c语言资料,然后我根据自己从业十年经验,熬夜搞了几个通宵,精心整理了一份「c语言专业入门到高级教程+工具包」,

    2024年02月08日
    浏览(51)
  • MySQL会导致索引失效的情况与解决索引失效的方法

    什么情况会导致索引失效 索引失效也是慢查询的主要原因之一,常见的导致索引失效的情况有下面这些: 1.使用 SELECT * 进行查询; 2.创建了组合索引,但查询条件未准守最左匹配原则; 3.在索引列上进行计算、函数、类型转换等操作; 4.以 % 开头的 LIKE 查询比如 like \\\'%abc\\\'; ; 5.查

    2023年04月08日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包