gpt4 book ai didi

database - 值得为重复~两次的数据库值创建一个唯一表吗?

转载 作者:搜寻专家 更新时间:2023-10-30 23:15:51 24 4
gpt4 key购买 nike

我有一个约 60,000 行的静态数据库。有一个特定的列,其中有大约 30,000 个唯一条目。鉴于该比率(特定列中的 60,000 行/30,000 个唯一条目),是否值得创建一个包含这些条目的新表,并从主表链接到它?或者这会带来更多麻烦而不是值得的吗?

以更具体的方式提出问题:通过将此字段分离到它自己的表中,我会获得更高的效率吗?

**更新**

我们讨论的是 VARCHAR(100) 字段,但实际上,我怀疑任何条目都使用了那么多空间——我很可能将其缩减为 VARCHAR(50)。示例条目:“The Gas Patch and Little Canada”和“Kora Temple Masonic Bldg. George Coombs”

最佳答案

如果该字段是通常包含大约 30 个字符的 VARCHAR(255),备选方案是在主表中存储一个 4 字节整数,并使用具有 4 字节整数和 VARCHAR(255 ),那么您正在考虑节省一些空间。

旧方案:

T1: 30 bytes * 60 K entries = 1800 KiB.

新方案:

T1:  4       bytes * 60 K entries =  240 KiB
T2: (4 + 30) bytes * 30 K entries = 1020 KiB

因此,粗略地节省了 1800 - 1260 = 540 KiB 空间。如果必要时在 T2 中的整数列上建立索引,则会损失更多空间。如果数据的平均长度大于 30 个字节,则空间节省会增加。如果重复行的比例不断增加,则节省会增加。

空间节省是否显着取决于您的上下文。如果你需要多 0.5 兆字节的内存,你就得到了——如果你确定你不需要超过 65535 个不同的条目,你可以使用 2 字节整数而不是 4 字节整数(120 + 960 KiB = 1080 KiB;节省 720 KiB)。另一方面,如果您真的不会注意到可用的几千兆字节存储中的半兆字节,那么它就变成了一个更实用的问题。维护两个表是比较困难的工作,但保证每次使用时名称都相同。维护一张表意味着您必须确保名称对得到正确处理——或者,更有可能的是,您忽略了这种可能性,结果在应该有成对的地方没有成对,或者在应该有成对的地方得到了三胞胎双胞胎。

显然,如果重复的类型是一个 4 字节整数,那么使用两个表将不会节省任何东西;这会占用您的空间。

因此,很大程度上取决于您没有告诉我们的内容。类型是一个关键问题。另一个是重复背后的语义。

关于database - 值得为重复~两次的数据库值创建一个唯一表吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13893243/

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