【发布时间】:2011-10-23 14:58:41
【问题描述】:
所以我一直认为在 Extra 列中看到“Using Where”是一件好事。然而,我正计划为我的同事准备一个棕色袋子午餐来解释解释,现在我不太确定。 MySQL 文档在有关“使用位置”的注释中说明了这一点:
WHERE 子句用于限制与下一个表匹配或发送到客户端的行。除非您特别打算从表中获取或检查所有行,否则如果 Extra 值不是 Using where 并且表连接类型是 ALL 或索引,则您的查询可能有问题。 即使您对 WHERE 子句的所有部分都使用索引,您也可能会看到 Using where if the column can be NULL.
这让我相信,即使我的 WHERE 子句只包含索引的一部分,如果列可以具有 NULL 值,MySQL 仍然会检查行。
这是真的吗?如果是这样,如果不需要,我应该将列更改为不包含 NULL 吗?我会看到速度提升吗?
【问题讨论】:
-
我刚刚做了一个测试:将列从 null 更改为 not null 然后“使用 where”消失了。
标签: mysql database-optimization database-indexes