所以我一直认为在额外的专栏中看到“使用Where”是一件好事。然而,我正计划为我的同事准备一顿棕色的午餐,解释一下解释,现在我不太确定了。MySQL文档在关于“使用Where”的注释中提到了这一点:
WHERE子句用于限制与下一个表匹配的行或发送到客户端。除非您特别打算从表中获取或检查所有行,否则如果额外值不使用where,并且表联接类型为all或index,则可能会在查询中出错。即使对WHERE子句的所有部分都使用索引,如果列可以为空,也可以使用where .。
这使我相信,即使WHERE子句只包含索引的一部分,如果列可以有空值,MySQL仍然会检查行。
这是真的吗?如果是这样的话,如果不需要,是否应该将列更改为NULL?我会看到提速吗?
发布于 2011-08-09 22:00:57
Nullable列确实有开销,因为额外需要检查null条件。如果一个列不一定是空的,或者您的要求不允许为空,那么一定要使列为not null。
至于指标,则取决于指标的结构。如果索引是用(a,b,c)定义的,并且在where子句中使用b,c,则不能使用该索引,因为a不起作用。
https://stackoverflow.com/questions/7003434
复制相似问题