【发布时间】:2011-06-07 21:43:29
【问题描述】:
有时可以表示不存在的值(不会丢失功能),而无需借助可 NULL 的列,例如:
- 引用另一个表的 AUTO_INCREMENT 行 ID 的列中的零整数
- 无效的日期值 (0000-00-00)
- 零时间戳值
- 空字符串
另一方面,根据 Ted Codd 的关系模型,NULL 是缺失数据的标记。我总是觉得做一些“正确的方式”会更好,而且 MySQL 支持它和相关的 3 值逻辑,为什么不呢?
几年前,我发现了一个性能问题,发现只需在列定义中添加NOT NULL 即可解决它。该列已编入索引,但我不记得其他详细信息。从那时起,当有替代方法时,我一直避免使用 NULL 列。
但一直困扰着我的是,我没有正确理解在 MySQL 表中允许 NULL 对性能的影响。有人可以帮忙吗?
【问题讨论】:
-
NULL in MySQL (Performance & Storage) 的可能重复项,很有趣,但之前被问过并回答过
-
您可以再次开始使用可为空的列(在适当的情况下),下次遇到可以通过将列更改为 NOT NULL 来解决的性能问题时,请发布确切的详细信息。然后,您将有望得到一个答案,让您了解所涉及的问题,同时也可能治愈您对可空列的恐惧。
-
@ajreal:不幸的是,虽然很有趣,stackoverflow.com/questions/229179/… 并没有回答我的问题。
-
@Mark Byers:我知道这个问题真的可以举个例子。我会看看我是否可以创建一个。
标签: mysql database performance null