mysql不等于走索引吗

mysql不等于走索引吗,第1张

不一定的,在很多场景下,NOT IN、不等于两类 *** 作使用二级索引的成本远超于全表扫描的成本,查询优化器按照成本选择"最优执行计划",导致查询不走二级索引。但不能因此就彻底判断NOT IN或<>两类 *** 作不能走索引。

mysql 索引失效的原因有哪些?Mysql索引失效的原因

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

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

3、存储引擎不能使用索引中范围条件右边的列,范围之后索引失效。(<,>between and)。这写条件判断最后放到后面,先定位到小的范围再开始。

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

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

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

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

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

相关mysql调优链接:Mysql调优


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7235003.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-03
下一篇 2023-04-03

发表评论

登录后才能评论

评论列表(0条)

保存