首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么历史上人们使用255而不是256来表示数据库字段的大小?

为什么历史上人们使用255而不是256来表示数据库字段的大小?
EN

Stack Overflow用户
提问于 2010-02-26 17:40:48
回答 12查看 71.7K关注 0票数 211

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

代码语言:javascript
运行
复制
varchar(255)

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

假设varchar(0)是胡说八道(容量为零)?在哪种情况下,2^8的空间应该是256?

还有没有其他提供性能优势的级别?例如,varchar(512)的性能是否不如varchar(511)或varchar(510)?

这个值对于所有关系数据库,无论是旧的还是新的都是一样的吗?

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

编辑:

感谢你的回答,似乎有一些共识认为字节是用来存储大小的,但这并没有在我的脑海中解决这个问题。

如果元数据(字符串长度)存储在相同的连续内存/磁盘中,这就有一定的意义。1字节的元数据和255字节的字符串数据将非常适合彼此,并适合256个连续字节的存储,这可能是整洁和整洁的。

But...If元数据(字符串长度)与实际的字符串数据(可能在主表中)分开存储,然后将字符串数据的长度限制为一个字节,因为只存储1字节整数的元数据看起来有点奇怪。

在这两种情况下,这似乎是一个可能取决于DB实现的微妙之处。使用255的做法似乎相当普遍,所以一定有人在一开始就为它争论了一个很好的案例,有人能记得那个案例是什么吗?程序员不会无缘无故地采用任何新的实践,而且这一定是新的一次。

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2010-02-26 17:44:34

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

长度为零的值对于varchar数据当然是有效的(除非另有约束)。大多数系统将这样的空字符串视为与NULL不同,但某些系统(特别是Oracle)将空字符串视为与NULL相同。对于空字符串不为NULL的系统,需要在行中的某个位置添加一个位,以指示是否应将该值视为NULL。

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

票数 180
EN

Stack Overflow用户

发布于 2010-02-26 17:47:10

255是varchar limit in mySQL4 and earlier.

另外255个字符+空终止符= 256

或1字节长度描述符给出的可能范围是0-255个字符

票数 36
EN

Stack Overflow用户

发布于 2010-02-26 17:43:31

255是可以存储在单字节无符号整数中的最大数值(假设是8位字节)-因此,出于某种目的存储字符串长度的应用程序更喜欢255而不是256,因为这意味着它们只需要为"size“变量分配一个字节。

票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2340639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档