所以我一直认为看到Extra列中的“Using Where”是件好事。不过,我正在计划为同事解释一个棕色袋午餐解释EXPLAIN,现在我不太确定。 MySQL的医生说这要注意的事项“使用去哪儿”:MySQL优化:EXPLAIN“Extra”列包含“Using Where”
WHERE子句用于限制匹配的行对下一个表或发送到客户端。除非您专门打算从表中读取或检查所有行,否则如果Extra值不是使用where和表连接类型是ALL或索引,则查询中可能有问题。 即使您对WHERE子句的所有部分使用索引,也可能会看到如果列可以为NULL,则使用where。
这使我相信,即使我的WHERE子句仅包含索引的部分,即MySQL的仍然将检查行如果列可以有NULL值。
这是真的吗?如果是这样,如果我不需要它,我应该将列更改为不包含NULL吗?我会看到速度提升吗?
我刚刚做了一个测试:将列从null更改为非null,然后“使用where”消失。 – tomwang1013