gpt4 book ai didi

sql - 为什么历史上人们使用 255 而不是 256 作为数据库字段大小?

转载 作者:行者123 更新时间:2023-12-03 04:13:43 30 4
gpt4 key购买 nike

您经常看到数据库字段设置为 255 个字符,传统/历史原因是什么?我认为这与分页/内存限制和性能有关,但 255 和 256 之间的区别一直让我感到困惑。

varchar(255)

考虑到这是一个容量或大小,不是索引器为什么 255 优于 256? 是否为某种目的保留了一个字节(终止符或 null 或其他) ?

大概 varchar(0) 是无意义的(容量为零)?在这种情况下,2^8 的空间肯定应该是 256?

还有其他幅度可以提供性能优势吗?例如,varchar(512) 的性能是否低于 varchar(511) 或 varchar(510)?

这个值对于所有关系数据库(新旧)都相同吗?

免责声明 - 我是一名开发人员,而不是 DBA,我使用适合我的业务逻辑的字段大小和类型,但我想知道历史 这种偏好的原因,即使它不再相关(但如果它仍然相关则更重要)。

编辑:

感谢您的回答,似乎存在一些共识,即使用字节来存储大小,但这并不能在我的脑海中明确解决问题。

如果元数据(字符串长度)存储在相同的连续内存/磁盘中,则有意义。 1 字节的元数据和 255 字节的字符串数据非常适合,并且适合 256 个连续字节的存储,这大概是整洁的。

但是...如果元数据(字符串长度)与实际字符串数据分开存储(可能在主表中),那么将字符串数据的长度限制为一个字节,因为只存储一个字节更容易1 字节整数的元数据似乎有点奇怪。

在这两种情况下,这似乎都是一个微妙之处,可能取决于数据库的实现。使用 255 的做法似乎相当普遍,所以某个地方的某个人一开始肯定已经提出了一个很好的案例,有人能记得那个案例是什么吗?程序员不会无缘无故地采用任何新的做法,而且这一定是新的一次。

最佳答案

最大长度为255个字符,DBMS可以选择使用单个字节来指示字段中数据的长度。如果限制为 256 或更大,则需要两个字节。

长度为零的值对于 varchar 数据当然有效(除非另有限制)。大多数系统将此类空字符串视为与 NULL 不同,但某些系统(尤其是 Oracle)将空字符串视为与 NULL 相同。对于空字符串不为 NULL 的系统,需要在行中的某个位置添加一个附加位来指示该值是否应被视为 NULL。

正如您所注意到的,这是一项历史优化,可能与当今的大多数系统无关。

关于sql - 为什么历史上人们使用 255 而不是 256 作为数据库字段大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2340639/

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