当前位置:   article > 正文

MySQL中查询不使用索引的情况汇总_查询什么情况下不走复合索引

查询什么情况下不走复合索引

有索引,但用不上的情况:

在数据库表中,使用索引可以提高查询速度。但是索引并不是对所有的查询操作都会生效的。比如以下几种情况,将导致索引失效

1、如果查询条件用or,必须or条件中的每个列都加上索引,否则无效。

2、对于复合索引(又叫多列索引或者联合索引),如果查询的列不使用复合索引的第一部分,则不使用索引。例如,tb表的复合索引为(key1,key2,key3),则查询select * from tb where key2=1 and key2>5将不会使用索引。

3、如果like是以%开头的,则该列上的索引不会被使用。例如:select * from tb where key1 like "%a"; 即使key1列上建立了索引,该查询也不会使用索引。

4、存在索引列的数据类型隐形转换,则不使用索引。例如:列key1的数据类型为字符串,select * from tb where key1=1; 将不会使用索引。要想使用索引,必须将字符串用引号印起来。

5、where字句里对索引列有数学运算或者使用函数,则不使用索引。


不推荐使用索引的情况:

1、数据唯一性差(一个字段的取值只有几种情况)的字段不要使用索引:

例如性别,只有两种可能数据。意味着索引的二叉树级别少,这样的二叉树查询无异于全表扫描。

2、频繁更新的字段不要使用索引:

例如login_count登陆次数,频繁变化导致索引也频繁变化,增大数据库工作量,降低效率。





本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/381464
推荐阅读
相关标签
  

闽ICP备14008679号