本篇文章给大家分享的是有关mysql中出现索引失效的情况有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。最佳左前缀原则——如果索引了多列,要遵守最左前缀原则。指的是查询要从
本篇文章给大家分享的是有关mysql中出现索引失效的情况有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
最佳左前缀原则——如果索引了多列,要遵守最左前缀原则。指的是查询要从索引的最左前列开始并且不跳过索引中的列。
前提条件:表中已添加复合索引(username,passWord,age)
分析:该查询缺少username,查询条件复合索引最左侧username缺少,违反了最佳左前缀原则,导致索引失效,变为ALL,全表扫描
分析:查询条件缺少username,password,查询条件复合索引最左侧username,password缺少,违反了最佳左前缀原则,导致索引失效,变为ALL,全表扫描
分析:该查询只有一个username条件,根据最佳左前缀原则索引能够被使用到,但是是部分使用
不在索引列上做任何操作(计算,函数,(自动或者手动)类型装换),会导致索引失效而导致全表扫描
分析:第一个图索引列不使用函数,遵循左前缀原则,能够使用索引。第二张图索引列上使用了函数,即使遵循左前缀原则,索引还是失效
存储引擎不能使用索引中范围条件右边的列,范围之后索引失效。(< ,> between and)
分析:图一索引全部使用到。图二索引使用到username和age,但是username是使用索引检索,而age着重索引排序,这时age为范围查找,password索引将失效
Mysql使用不等于(!= 或者<>)的时候,无法使用索引,会导致索引失效
mysql中使用is not null 或者 is null会导致无法使用索引
分析:对username列做了普通索引,查询带is not null,结果索引不生效
mysql中like查询是以%开头,索引会失效变成全表扫描,覆盖索引。
分析:对username列做了普通索引,以%开头进行查询,结果索引失效被覆盖
mysql中,字符串不加单引号索引会失效。正确写法:select * from t_user where username = 'lujin';
mysql中,如果条件中有or,即使其中有条件带索引也不会使用(这也是为什么尽量少用or的原因)。要想使用or,又想让索引生效,只能将or条件中的每个列都加上索引
以上就是mysql中出现索引失效的情况有哪些,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网数据库频道。
--结束END--
本文标题: mysql中出现索引失效的情况有哪些
本文链接: https://www.lsjlt.com/news/277771.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-05-16
2024-05-16
2024-05-16
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-15
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0