所以我一直认为在 Extra 栏中看到“Using Where”是一件好事。但是,我正计划为我的同事准备一份棕色袋子午餐,以解释解释,现在我不太确定。MySQL 文档在关于“Using Where”的注释中这么说:
WHERE 子句用于限制与下一个表匹配或发送到客户端的行。除非您特别打算从表中获取或检查所有行,否则如果 Extra 值不是 Using where 并且表连接类型是 ALL 或索引,则您的查询可能有问题。即使您对 WHERE 子句的所有部分都使用索引,您也可能会看到使用 where 如果列可以为 NULL。
这让我相信即使我的 WHERE 子句只包含索引的一部分,如果列可以具有 NULL 值,MySQL 仍然会检查行。
真的吗?如果是这样,如果不需要,我应该将列更改为不包含 NULL 吗?我会看到速度提升吗?