是否有一个很好的理由,我看VARCHAR(255)使用得非常频繁(相对于另一长度)?(Is ther

2019-06-27 12:52发布

在多个课程,书籍,和工作,我已经看到那种默认“稍短”文本定义为VARCHAR(255)文本字段。 是否有选择的255长度所以很多时候,除了是什么正当理由, 一个不错的轮数 ? 它是一个抵抗从过去一段时间,当时有一个很好的理由(无论它是否适用于今天)?

我知道,当然,更严格的限制会比较理想,如果你不知何故知道该字符串的最大长度。 但是,如果你正在使用VARCHAR(255),这可能表明,你不知道的最大长度,只知道它是一个“比较短的”字符串。


注意:我发现这个问题( VARCHAR(255)V TINYBLOB v TINYTEXT ),它表示,VARCHAR(n)的需要n 1个字节的存储对于n <= 255,N 2个字节的存储对于n的> 255。 这是唯一的原因是什么? 这似乎有点武断,因为你只会相比节能VARCHAR(256)两个字节,你可以很容易地通过宣布它VARCHAR(253)保存的另两个字节。

Answer 1:

从历史上看,255个字符经常是一个最大长度VARCHAR一些的DBMS,而且有时候还卷起是有效的最大,如果你想使用UTF-8,并已列索引(因为指数长度的限制)。



Answer 2:

255是因为它是一种可以用一个8比特数进行计数的最大字符数。 可以最大限度地利用8位计数,而不需要轻率另一整个字节计数大于255的字符。

当使用这种方式,VARCHAR只使用字节+ 1存储文本的数量,所以你可能它也设定为255,除非你想在该领域的字符数的硬性限制(如50)。



Answer 3:

大概是因为这两个SQL Server和Sybase(以名称的两个我熟悉),用于在中字符的个数在255个字符的最大VARCHAR列。 对于SQL Server,这改变了7版本1996/1997左右......但老习惯有时难改。



Answer 4:

我要回答这个问题的文字: 没有 ,没有,你看VARCHAR(255)使用得非常频繁(确有原因 ,因为在其他的答案中讨论,只是没有好的)一个很好的理由。 你不会找到的项目,因为建筑师选择VARCHAR(300)已灾难性故障,而不是VARCHAR的(255)的例子很多。 这将是几乎完全无足轻重的问题,即使你在谈论CHAR而不是VARCHAR。



Answer 5:

当你说2^8你得到256 ,但在电脑方面的数字从数字开头0 。 所以,那么你得到了255 ,你可以在一个网络掩码IP或IP本身探讨它。

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

这是否帮助?



Answer 6:

注意:我发现这个问题(VARCHAR(255)V TINYBLOB v TINYTEXT),它表示,VARCHAR(n)的需要N N + 1个字节的存储<= 255,N + 2个字节的存储对于n的> 255。 这是唯一的原因是什么? 这似乎有点武断,因为你只会相比节能VARCHAR(256)两个字节,你可以很容易地通过宣布它VARCHAR(253)保存的另两个字节。

号你不通过声明253保存两个字节的VARCHAR的实现是最有可能的长度计数器和一个可变长度,nonterminated阵列。 这意味着,如果你在一个varchar(255)存储“你好”,你将占据6个字节:为长度(5号)和五个英文字母5个字节一个字节。



Answer 7:

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

事实上,有一阵子,255是你能在MySQL给予VARCHAR的最大尺寸,并有使用VARCHAR在与索引等问题TEXT优势。



Answer 8:

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



Answer 9:

另一个原因可能是在Windows下很老的数据访问库,如RDO和ADO(COM版本不ADO.NET)你必须调用特殊的方法,使用GetChunk,与超过255个字符从列中获取数据。 如果你限制VARCHAR列到255,这额外的代码是没有必要的。



文章来源: Is there a good reason I see VARCHAR(255) used so often (as opposed to another length)?