mysql索引失效的几种情况分析

 更新时间:2021年03月11日 14:55:53   作者:path哥  
这篇文章主要给大家介绍了关于mysql索引失效的情况,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

1、最佳左前缀原则——如果索引了多列,要遵守最左前缀原则。指的是查询要从索引的最左前列开始并且不跳过索引中的列。

前提条件:表中已添加复合索引(username,password,age)

分析:该查询缺少username,查询条件复合索引最左侧username缺少,违反了最佳左前缀原则,导致索引失效,变为ALL,全表扫描

分析:查询条件缺少username,password,查询条件复合索引最左侧username,password缺少,违反了最佳左前缀原则,导致索引失效,变为ALL,全表扫描

分析:该查询只有一个username条件,根据最佳左前缀原则索引能够被使用到,但是是部分使用

2、不在索引列上做任何操作(计算,函数,(自动或者手动)类型装换),会导致索引失效而导致全表扫描

分析:第一个图索引列不使用函数,遵循左前缀原则,能够使用索引。第二张图索引列上使用了函数,即使遵循左前缀原则,索引还是失效

3、存储引擎不能使用索引中范围条件右边的列,范围之后索引失效。(< ,> between and)

分析:图一索引全部使用到。图二索引使用到username和age,但是username是使用索引检索,而age着重索引排序,这时age为范围查找,password索引将失效

4、mysql使用不等于(!= 或者<>)的时候,无法使用索引,会导致索引失效

5、mysql中使用is not null 或者 is null会导致无法使用索引

分析:对username列做了普通索引,查询带is not null,结果索引不生效

6、mysql中like查询是以%开头,索引会失效变成全表扫描,覆盖索引。

分析:对username列做了普通索引,以%开头进行查询,结果索引失效被覆盖

7、mysql中,字符串不加单引号索引会失效。正确写法:select * from t_user where username = 'lujin';

8、mysql中,如果条件中有or,即使其中有条件带索引也不会使用(这也是为什么尽量少用or的原因)。要想使用or,又想让索引生效,只能将or条件中的每个列都加上索引

9、如果mysql使用全表扫描要比使用索引快,则不会使用到索引

总结

到此这篇关于mysql索引失效情况分析的文章就介绍到这了,更多相关mysql索引失效内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL UPDATE更新语句精解

    MySQL UPDATE更新语句精解

    mysql update命令的一些详细用法分析,真是不错的好东西,建议大家看看。
    2009-03-03
  • 使用mysqladmin检测MySQL运行状态的教程

    使用mysqladmin检测MySQL运行状态的教程

    这篇文章主要介绍了使用mysqladmin检测MySQL运行状态的教程,包括mysqladmin工具简单的awk使用,需要的朋友可以参考下
    2015-06-06
  • MySQL详细讲解变量variables的用法

    MySQL详细讲解变量variables的用法

    MySQL系统变量(system variables)实际上是一些系统参数,用于初始化或设定数据库对系统资源的占用,文件存放位置等等,本篇文章我们来探究一下variables
    2022-06-06
  • 当面试官问mysql中char与varchar的区别

    当面试官问mysql中char与varchar的区别

    这篇文章主要以聊天形式图片的添加,将面试官面试真实场景体现出来,好奇的朋友不要错过奥
    2021-08-08
  • Mysql5.5 InnoDB存储引擎配置和优化

    Mysql5.5 InnoDB存储引擎配置和优化

    本文介绍一下Mysql5.5 InnoDB存储引擎配置和优化的方法
    2013-11-11
  • mysql 数据插入和更新及删除详情

    mysql 数据插入和更新及删除详情

    这篇文章主要介绍了mysql 数据插入和更新及删除,文章围绕mysql 数据插入和更新及删除的相关资料展开内容,需要的朋友可以参考以下文章的具体内容
    2021-10-10
  • mysql8.0忘记密码的详细解决方法

    mysql8.0忘记密码的详细解决方法

    很早前安装了MYSQL,现在由于需要使用MYSQL但忘记密码,所以下面这篇文章主要给大家介绍了关于mysql8.0忘记密码的详细解决方法,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • MySQL学习笔记2:数据库的基本操作(创建删除查看)

    MySQL学习笔记2:数据库的基本操作(创建删除查看)

    我们所安装的MySQL说白了是一个数据库的管理工具,真正有价值的东西在于数据关系型数据库的数据是以表的形式存在的,N个表汇总在一起就成了一个数据库现在来看看数据库的基本操作
    2013-01-01
  • MySql 索引、锁、事务知识点小结

    MySql 索引、锁、事务知识点小结

    这篇文章主要介绍了MySql 索引、锁、事务知识点,总结分析了mysql数据库中关于索引、锁和事务的概念、原理、知识点及相关注意事项,需要的朋友可以参考下
    2019-10-10
  • iOS开发runloop运行循环机制学习

    iOS开发runloop运行循环机制学习

    这篇文章主要为大家介绍了iOS开发runloop运行循环的机制学习,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07

最新评论