表团队包含1169行,其中1133行具有UserId字段!= 0。 “UserId”字段中有一个索引
查询:
EXPLAIN SELECT count(*) FROM teams WHERE UserId != 0
返回具有要检查的行的估计值的输出等于1133。
为什么查询需要检查所有行?它不应该仅仅为此目的使用索引吗?
谢谢。
答案 0 :(得分:1)
它会检查几乎所有行,因为你想要几乎所有行(因为你说UserId!= 0)。当然,你然后做一个“计数”,所以你只显示一个记录,但他们都必须被提取,以便计算它们。 如果你去哪里
select count(1) from teams where UserId = 100
然后它将检查几行,因为你要求一个精确的值(UserId = XX而不是UserId!= yy)。