【问题标题】:Performance effects of using NULL-able fields in MySQL在 MySQL 中使用 NULL-able 字段的性能影响
【发布时间】: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


【解决方案1】:

每列节省 1 位。 http://dev.mysql.com/doc/refman/5.0/en/data-size.html 看起来不多,但超过数百万行它开始产生影响

【讨论】:

  • 差异相对较小。当行的长度为 12 个字节时,它只有 1%。
猜你喜欢
  • 2015-04-14
  • 2011-05-01
  • 2018-06-22
  • 1970-01-01
  • 1970-01-01
  • 2015-03-03
  • 1970-01-01
  • 2010-09-30
  • 1970-01-01
相关资源
最近更新 更多