MySQL会导致索引失效的情况与解决索引失效的方法

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

什么情况会导致索引失效

索引失效也是慢查询的主要原因之一,常见的导致索引失效的情况有下面这些:

  • 1.使用 SELECT * 进行查询;
  • 2.创建了组合索引,但查询条件未准守最左匹配原则;
  • 3.在索引列上进行计算、函数、类型转换等操作;
  • 4.以 % 开头的 LIKE 查询比如 like '%abc';;
  • 5.查询条件中使用 or,且 or 的前后条件中有一个列没有索引,涉及的索引都不会被使用到;
  • 6.发生隐式转换;
  • 7.使用不等于(!=或者<>)的时候

解决索引失效的方法

  • 1.尽量使用覆盖索引(之访问索引列的查询),减少 select * 覆盖索引能减少回表次数;

  • 2.使用组合索引时,需要遵循“最左前缀”原则;

  • 3.不在索引列上做任何操作,例如计算、函数、类型转换,会导致索引失效而转向全表扫描;

  • 4.LIKE以通配符开头(%abc)MySQL索引会失效变成全表扫描的操作;

  • 5.少用or,用它来连接时会索引失效。

  • 6.字符串不加单引号会导致索引失效(可能发生了索引列的隐式转换);

  • 7.MySQL在使用不等于(!=或者<>)的时候无法使用索引会导致全表扫描;文章来源地址https://www.toymoban.com/news/detail-400532.html

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

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

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

相关文章

  • MySQL中IN的取值范围较大时会导致索引失效

    结论:IN肯定会走索引,但是当IN的取值范围较大时会导致 索引失效,走全表扫描 navicat可视化工具使用explain函数查看sql执行信息 1.1 场景1:当IN中的取值只有一个主键时 我们只需要注意一个最重要的type 的信息很明显的提现是否用到索引: type结果值从好到坏依次是: syste

    2024年02月15日
    浏览(34)
  • like模糊查询导致索引失效的解决方案

    我们在使用like 通配符有下面三种用法,其中第1和第2的用法会引起索引失效的问题。这是因为MySQL的索引是按照从左到右的顺序进行匹配的,而前导通配符(比如%abc)会导致无法按照索引顺序进行匹配。 1、like \\\'%name\\\'   —— 失效 2、like \\\'%name%\\\'  —— 失效 3、like \\\'name%\\\' 现在来

    2024年02月11日
    浏览(43)
  • 索引失效的 12 种情况

    目录 一、未使用索引字段进行查询 二、索引列使用了函数或表达式 三、使用了不等于(!= 或 )操作符 四、LIKE 操作符的模糊查询 五、对索引列进行了数据类型转换 六、使用 OR 连接多个条件 七、表中数据量较少 八、索引列上存在大量重复值 九、数据分布不均匀 十、索引

    2024年02月19日
    浏览(37)
  • SQL笔记 -- 索引失效情况

    对于多列索引,过滤条件要使用索引必须按照索引建立时的顺序,依次满足,一旦跳过某个字段,索引后面的字段都无法被使用。 例如以下情况,索引从左到右的顺序为age,classId,name,但是在查询时跳过了age,因此该查询无法使用索引。 查询条件中使用了函数会导致索引失

    2024年01月20日
    浏览(38)
  • 更新了驱动导致电脑某个设备失效的解决方法

    一.问题描述        前端时间在联想管家中看到了更新驱动的提示,然后进去之后,点了其中的主板及芯片组的驱动更新,没想更新完成之后导致我的笔记本电脑中触摸板直接失灵,没有了鼠标,只有连接外部usb鼠标才有效。 二.分析原因       发现更新了驱动之后导致 

    2024年02月15日
    浏览(44)
  • 索引失效的七种情况

    以上这些情况都可能导致数据库查询时无法有效地使用索引,从而影响查询性能。为了避免索引失效,需要优化查询语句,合理设计索引,尽量避免上述情况的出现。

    2024年02月10日
    浏览(35)
  • 【数据库】哪些操作会导致索引失效

    🍎 个人博客: 个人主页 🏆 个人专栏: 数据库 ⛳️   功不唐捐,玉汝于成 目录 前言 正文 结语  我的其他博客   在数据库管理中,索引的有效性对于查询性能至关重要。然而,索引可能会因为各种操作而失效,从而影响到数据库的性能和稳定性。了解导致索引失效的常

    2024年02月19日
    浏览(44)
  • 关于使用BETWEEN AND 使索引失效的解决方法

    由于业务需要,需要使用between and 查询数据, 在查询数据条数约占总条数五分之一以下时能够使用到索引,但超过五分之一时,则使用全表扫描了。速度极慢。 解决办法(联合索引+强制使用索引)

    2024年02月14日
    浏览(40)
  • Elasticsearch Mapping字段未支持索引导致搜索失效

    生产上Es根据一个时间字段搜索,却没有返回数据 根据命令: GET indexName/_mapping 查看 count_name设置了 “index”: false 导致根据该字段搜索导致索引不生效。 ES的mappings 定义好了生成索引后是不支持修改现有的字段的,只能新增属性。 使用 reindex 命令处理 1、运行命令: GET ind

    2024年02月11日
    浏览(35)
  • MySQL的index merge(索引合并)导致数据库死锁分析与解决方案

    在DBS-集群列表-更多-连接查询-死锁中,看到9月22日有数据库死锁日志,后排查发现是因为mysql的优化-index merge(索引合并)导致数据库死锁。 index merge(索引合并):该数据库查询优化的一种技术,在mysql 5.1之后进行引入,它可以在多个索引上进行查询,并将结果合并返回。 在

    2024年02月08日
    浏览(82)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包