当前位置: 代码网 > it编程>数据库>Mysql > MySQL索引失效的问题解决

MySQL索引失效的问题解决

2024年05月26日 Mysql 我要评论
一、索引列上运算操作不要在索引列上进行运算操作,否则索引会失效。在tb_user的phone列加上索引,然后进行条件查询,在这个情况下,是可以走索引的。但是在对索引列进行操作的时候,比如截取字符串,就

一、索引列上运算操作

不要在索引列上进行运算操作,否则索引会失效。

在tb_user的phone列加上索引,然后进行条件查询,在这个情况下,是可以走索引的。

但是在对索引列进行操作的时候,比如截取字符串,就会导致索引失效。如下:

二、字符串不加单引号

有的时候我们编写字符串不规范,会不加单引号,可以查询出来,但是它的执行计划不同。会导致全文扫描。

如下:

在加上单引号的情况

在不加上单引号的情况,如图,是进行的全文扫描。

三、模糊匹配

如果仅仅是尾部模糊匹配,索引不会失效,如果是头部模糊匹配,索引失效。

如下:如果仅仅是模糊匹配,是可以进行匹配到的。

如果头部模糊,如下:索引失效。

注意: 在大量数据下,一定要规避头部模糊查询,会导致索引失效。

四、or连接的条件

用or分隔开的条件,如果or一侧的列有索引,但是另一侧的列没有索引,那么设计的索引都不会被用到。

首先age是没有索引的,仅仅依靠age,复合索引是不生效的。

然后进行explain的执行计划的查看发现涉及到的索引并没有生效。

换个位置同理:

 创建age的索引,注意idx_user_age的索引命名规范,我就随便写了,运行后如下:索引执行

五、数据分布影响

如果mysql评估使用索引比全表扫描更慢,则不使用索引,走全表扫描。

如上三图,经过测试我们发现,相同的sql语句,只是传入的字段值不同,最终的执行计划也完全不一样,这是为 什么呢?

这是个在mysql查询的时候,会对语句进行评估,如果走全表扫描的时间比走索引慢,则放弃锁引,走全表扫描。

因为索引是用来索引少量数据的,如果通过索引查询返回大批量的数据,则还不 如走全表扫描来的快,此时索引就会失效。

到此这篇关于mysql索引失效的问题解决的文章就介绍到这了,更多相关mysql索引失效内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网! 

(0)

相关文章:

  • 一文详解MySQL 存储引擎

    一、存储引擎概念介绍mysql中的数据用各种不同的技术存储在文件中,每一种技术都使用不同的存储机制、索引技巧、锁定水平并最终提供不同的功能和能力,这些不同的技术以及配套的功能在my…

    2024年05月26日 数据库
  • mysql日期函数用法大全

    mysql日期函数用法大全

    一、 返回当前日期1、current_date()、current_date和curdate()用法相同:返回当前日期2、current_time()、curr... [阅读全文]
  • mysql中DATE_FORMAT()函数的具体使用

    mysql中DATE_FORMAT()函数的具体使用

    一. 说明在 mysql 中,date_format() 函数用于将日期/时间类型的值按照指定的格式进行格式化输出。它的一般语法如下:date_format(d... [阅读全文]
  • MySQL将多条数据合并成一条的完整代码示例

    数据库中存的是多条数据,展示的时候需要合并成一条数据表存储形式如下图以type分组,type相同的算一条,且保留image和link的所有数据,用groupby只保留一条数据解决方…

    2024年05月26日 数据库
  • MYSQL中EXISTS的用法小结

    MYSQL中EXISTS的用法小结

    在mysql数据库中,exists是一种强大的工具,用于处理复杂的查询需求。本文将深入解析exists的用法、示例场景以及一些注意事项,让你成为数据库查询中的高... [阅读全文]
  • MySQL查找NULL值的全面指南

    前言在数据库中,null 值表示缺失或未知的数据。在 mysql 中,我们可以使用特定的查询语句来查找包含 null 值的数据。本文将详细介绍如何在 mysql 中查找 null …

    2024年05月26日 数据库

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com