首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL优化:解释“额外”列包含“使用其中”

MySQL优化:解释“额外”列包含“使用其中”
EN

Stack Overflow用户
提问于 2011-08-09 21:50:10
回答 1查看 9.6K关注 0票数 7

所以我一直认为在额外的专栏中看到“使用Where”是一件好事。然而,我正计划为我的同事准备一顿棕色的午餐,解释一下解释,现在我不太确定了。MySQL文档在关于“使用Where”的注释中提到了这一点:

WHERE子句用于限制与下一个表匹配的行或发送到客户端。除非您特别打算从表中获取或检查所有行,否则如果额外值不使用where,并且表联接类型为all或index,则可能会在查询中出错。即使对WHERE子句的所有部分都使用索引,如果列可以为空,也可以使用where .

这使我相信,即使WHERE子句只包含索引的一部分,如果列可以有空值,MySQL仍然会检查行。

这是真的吗?如果是这样的话,如果不需要,是否应该将列更改为NULL?我会看到提速吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-09 22:00:57

Nullable列确实有开销,因为额外需要检查null条件。如果一个列不一定是空的,或者您的要求不允许为空,那么一定要使列为not null

至于指标,则取决于指标的结构。如果索引是用(a,b,c)定义的,并且在where子句中使用b,c,则不能使用该索引,因为a不起作用。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7003434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档