0

表 team 包含 1169 行,其中 1133 行具有 UserId 字段!=0。“UserId”字段上有一个索引

询问:

EXPLAIN SELECT count(*) FROM teams WHERE UserId != 0

返回要检查的行的估计等于 1133 的输出。

为什么查询需要检查所有行?它不应该只为此目的使用索引吗?

谢谢你。

4

1 回答 1

1

它将检查几乎所有行,因为您想要几乎所有行(因为您说 UserId != 0)。当然,然后您进行“计数”,因此您只显示一条记录,但它们都必须被提取才能计算它们。如果你在哪里做

select count(1) from teams where UserId = 100

然后它将只检查几行,因为您要求的是精确值(UserId = XX 而不是 UserId != yy)。

于 2012-04-20T12:43:49.137 回答