gpt4 book ai didi

mysql - 色谱柱的最佳用途是什么?

转载 作者:行者123 更新时间:2023-11-29 13:02:27 24 4
gpt4 key购买 nike

我有一个名为 Table1 的表,它大约有 20 列。这些列中有一半是字符串值,其余是整数。我的问题很简单:将所有列放入一张表中,还是将其分布到 2 个、3 个甚至 4 个表中,哪个更好?如果是这样,我必须使用 LEFT JOIN 加入他们。

最好的选择是什么?

谢谢

最佳答案

“最佳”的问题取决于表的使用方式。所以,这个问题没有真正的答案。我可以说 20 列并不是很多,很多非常合理的表都有超过 20 列的混合类型。

第一个观察:如果你问这样的问题,你对 SQL 有一定的了解,但不深入。一张 table 几乎肯定是最佳选择。

什么可能会改变这个建议?如果许多整数列都是NULL——比如90%的记录都为NULL——那么那些 NULL 值可能只是浪费数据页上的空间。通过消除这些行并将值存储在另一个表中,您可以减少数据的大小。

字符串值也是如此,但有一个警告。虽然整数至少占用 4 个字节,但可变长度字符串可能更小(取决于数据库存储它们的确切方式)。

另一个原因是数据的典型使用方式。如果查询通常只使用少数列,那么将每列存储在单独的表中可能会很有帮助。老实说,键列的开销通常会超过任何节省的开销。而且,这样的数据结构对于更新、插入和删除来说确实很糟糕。

但是,这在 Paraccel、Amazon Redshift 或 Vertica 等列式数据库中变得非常实用。此类数据库内置了对此类拆分的支持,并且可以对性能产生一些非常显着的影响。

关于mysql - 色谱柱的最佳用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23160581/

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