gpt4 book ai didi

MySQL/PostgreSQL 列大小,为什么?

转载 作者:行者123 更新时间:2023-11-29 03:55:51 25 4
gpt4 key购买 nike

我正在开发一个程序并遇到一个错误,该错误在表格列中插入一个类型为 int 的值,并且该值大于 Integer.MAX_VALUE 它吐出一个错误说数量太大了。我读到解决这个问题的方法很简单,只需将表更改为 BigInt 即可修复它。但这让我思考,为什么不是所有的程序员都只使用最大列值(例如 Varchar(255)、BigInt 等)而不是像 Varchar(30) 或 Int 这样更小的值?

当您不确定要插入什么时,这是否几乎可以完全消除像我这样的错误,尤其是当它基于用户输入时?仅使用列所需的最大可能类型是否有任何缺点?即使您在一个大的 int 列中只是“2”,表的大小是否会更大(即使这适用于 int?)。有性能损失吗?

谢谢!

最佳答案

对于 Varchar,您通常不只使用 MAX 的原因是因为它以不同的方式存储它并且对您的索引维护操作施加了限制。例如,您不能重建带有 varchar(max) 字段的“在线”索引。虽然涉及一些操作,但基本上 varchar(max) 数据存储在行外,因此维护额外的数据存储会产生开销。

对于数值类型来说,最主要的就是空格。 Bigint 是一个 8 字节的有符号整数,而 int 只有 4 个字节。如果您不需要大于 24 亿的空间,那只是浪费了空间(如果您有 24 亿行数据,通常会浪费很多空间)。

数据压缩可以解决其中的一些问题,但并非没有在查询数据时必须解压缩数据的代价。

所以原因多种多样,但除了使用更大尺寸的 varchar(而不是 varchar(max))之外,为您的数据选择“正确”的数据类型是一个好主意。

关于MySQL/PostgreSQL 列大小,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46010071/

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