针对索引字段的唯一性不高的情况下(索引的"区分度"低),优化器可能会选择全表扫描,而不是走索引。这可能是因为等值查询符合条件的记录太多了,导致了mysql认为全表扫描比用索引查找更快。
比如你对唯一性不高的字段(如性别:男/女)加了索引,这样通过索引去查找可能还需回表,还不如直接全表扫描!
若in中的数据量较大时,基本就不走索引了。如果你索引字段是一个unique,in可能就会用到索引。
如果你一定要用索引,可以用 force index。可能也和MySQL版本有关(5.6以后有做in的查询优化)
不一定的,在很多场景下,NOT IN、不等于两类 *** 作使用二级索引的成本远超于全表扫描的成本,查询优化器按照成本选择"最优执行计划",导致查询不走二级索引。但不能因此就彻底判断NOT IN或<>两类 *** 作不能走索引。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)