database - 数据库中varchar - 是否有一个很好的理由我经常使用VARCHAR(255)(与其他长度相反)?




varchar 40文字数 (6)

注意:我发现这个问题(varchar(255)v tinyblob v tinytext),它表示VARCHAR(n)需要n + 1个字节的存储空间用于n <= 255,n + 2个字节的存储空间用于n> 255。 这是唯一的原因吗? 这看起来很随意,因为与VARCHAR(256)相比,您只需要保存两个字节,并且可以通过声明VARCHAR(253)来轻松保存另外两个字节。

不,你不通过声明253保存两个字节。varchar的实现很可能是一个长度计数器和一个可变长度的非终结数组。 这意味着如果您将“hello”存储在varchar(255)中,您将占用6个字节:长度(数字5)为一个字节,五个字母为5个字节。

在多个课程,书籍和作业中,我已经将文本字段定义为VARCHAR(255)作为“简短”文本的默认类型。 有没有什么好的理由,经常选择255的长度,而不是一个很好的整数 ? 当过去有一段时间(当前是否适用)有一个很好的理由时,这是否会持续?

当然,我意识到,如果你知道字符串的最大长度,那么更严格的限制会更理想。 但是,如果您使用的VARCHAR(255)可能表示您不知道最大长度,只是它是一个“简短”字符串。

注意:我发现这个问题( varchar(255)v tinyblob v tinytext ),它表示VARCHAR( n )在n <255时需要n + 1个字节的存储空间, n > 255时需要n + 2个字节的存储空间。 这是唯一的原因吗? 这看起来很随意,因为与VARCHAR(256)相比,您只需要保存两个字节,并且可以通过声明VARCHAR(253)来轻松保存另外两个字节。


255被使用,因为它是可以用8位数字计数的最大字符数。 它最大限度地利用了8位计数,而不需要另外的整个字节来计算255以上的字符。

当以这种方式使用时,VarChar只会使用字节数+ 1来存储文本,因此您最好将其设置为255,除非您希望对字段中的字符数进行硬限制(如50)。


在许多应用程序中,例如MsOffice(直到版本2000或2002),每个单元的最大字符数为255.将数据从能够处理每个字段超过255个字符的程序移动到这些应用程序/从这些应用程序中移出是一场噩梦。 目前,限制越来越少。


当你说2^8你得到256 ,但计算机中的数字从数字0开始。 那么,你有了255 ,你可以在互联网掩码中为IP或IP本身探测它。

255是8位整数的最大值: 11111111 = 255

这有帮助吗?


无符号的1字节数可以包含范围[0-255]。 所以当你看到255的时候,主要是因为程序员认为基数为10 (得到笑话?):)

实际上,有一段时间,255是您在MySQL中可以提供VARCHAR的最大规模,并且在索引和其他问题上使用VARCHAR而不是TEXT有优势。


历史上,在一些DBMS中,255个字符通常是VARCHAR的最大长度,如果您想使用UTF-8并且索引列(由于索引长度限制),它有时仍然是有效的最大值。





varchar