gpt4 book ai didi

mysql - 将列添加到表中,该列对于大多数行来说都是空的

转载 作者:行者123 更新时间:2023-11-29 12:38:09 25 4
gpt4 key购买 nike

我的数据库中有一个已填充的现有表。我现在想要在此表中存储其他数据,但该数据需要存储一个附加字段(可能是 VARCHAR(40) )。我想要的最后一件事是以某种方式为所有不会使用它的现有条目分配这个空间。如果该字段设置为 NULL,MySQL 是否足够“智能”,不会显着增加表的大小,或者我最好为包含此额外数据字段的数据创建一个新表?

最佳答案

这取决于您使用的存储引擎。如果列中的大部分值为 NULL,InnoDB 存储引擎(默认)会提高性能。

因为在InnoDB中,每一列在行标题中都有一个“字段起始偏移量”,即每列一个或两个字节。如果列为 NULL,则该字段起始偏移量中的高位为打开。在这种情况下,根本不需要存储该列。因此,如果你有很多 NULL,你的存储空间应该会显着减少。

引用:
SO Answer
Example for null value performance efficiency

注意:如果您想在 MS SQL 中实现相同的功能,您可以考虑 SPARSE

关于mysql - 将列添加到表中,该列对于大多数行来说都是空的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26467507/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com