您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

MySQL中的NULL(性能和存储)

MySQL中的NULL(性能和存储)

这取决于您使用的存储引擎。

在MyISAM格式中,每个行标题都包含一个位域,每个列的每个位都具有一位以对NULL状态进行编码。NULL列仍会占用空间,因此NULL不会减少存储量。参见https://dev.mysql.com/doc/internals/en/myisam- introduction.html

在InnoDB中,每一列在行标题中都有一个“字段开始偏移量”,每列一个或两个字节。如果该列为NULL,则该字段起始偏移量的高位为开。在那种情况下,该列根本不需要存储。因此,如果您有很多NULL,则应该大大减少存储空间。参见https://dev.mysql.com/doc/internals/en/innodb- field-contents.html

NULL位是行标题的一部分,您不选择添加它们。

我可以想象NULL提高性能的唯一方法是,在InnoDB中,如果行中包含NULL,则数据页可以容纳更多行。因此,您的InnoDB缓冲区可能更有效。

但是,如果这在实践中提供了显着的性能优势,我将感到非常惊讶。担心NULL对性能的影响在于微优化领域。您应该将注意力集中在其他方面,这些领域可以带来更大的收益。例如,添加精心选择的索引或增加数据库缓存分配。

MySQL 2022/1/1 18:15:53 有523人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶