当我使用IN操作时mysql如何运行查询

时间:2013-12-30 03:28:34

标签: mysql sql

explain 
SELECT Fuid 
FROM profile_industry 
WHERE Findustry_id IN (101,102)

enter image description here

explain 
SELECT Fuid 
FROM profile_industry 
WHERE Findustry_id IN (1001,2012)

enter image description here

Findustry_id是单个索引列,为什么MySQL使用不同的索引,其中值列表不同?

1 个答案:

答案 0 :(得分:1)

如文档here中所述:

  

MySQL查询优化器使用关于密钥的估计统计信息   用于选择执行计划索引的分布,基于   指数的相对选择性。

我的猜测是第二个中的键选择了很多行,但是在第一个中选择了几行 - 至少根据索引支持的统计数据。如果选择了大的行百分比(10%?20%?50%?),那么全表扫描比使用索引更有效。