explain
SELECT Fuid
FROM profile_industry
WHERE Findustry_id IN (101,102)
explain
SELECT Fuid
FROM profile_industry
WHERE Findustry_id IN (1001,2012)
Findustry_id
是单个索引列,为什么MySQL使用不同的索引,其中值列表不同?
答案 0 :(得分:1)
如文档here中所述:
MySQL查询优化器使用关于密钥的估计统计信息 用于选择执行计划索引的分布,基于 指数的相对选择性。
我的猜测是第二个中的键选择了很多行,但是在第一个中选择了几行 - 至少根据索引支持的统计数据。如果选择了大的行百分比(10%?20%?50%?),那么全表扫描比使用索引更有效。