Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
表 team 包含 1169 行,其中 1133 行具有 UserId 字段!=0。“UserId”字段上有一个索引
询问:
EXPLAIN SELECT count(*) FROM teams WHERE UserId != 0
返回要检查的行的估计等于 1133 的输出。
为什么查询需要检查所有行?它不应该只为此目的使用索引吗?
谢谢你。
它将检查几乎所有行,因为您想要几乎所有行(因为您说 UserId != 0)。当然,然后您进行“计数”,因此您只显示一条记录,但它们都必须被提取才能计算它们。如果你在哪里做
select count(1) from teams where UserId = 100
然后它将只检查几行,因为您要求的是精确值(UserId = XX 而不是 UserId != yy)。