2012-04-06 117 views
10

为什么许多开发人员在创建MySQL表时将varchar设置为254而不是255?MySQL:为什么varchar(254)而不是varchar(255)?

证明这种情况的发生:mysql varchar 254

+1

也许有些人害怕真的会到极限!生活在边缘! :) – 2012-04-06 12:43:57

+0

@Jason_vorhees:我也见过varchar(254),并想知道决策过程是什么。我把它写成“没有;它是任意的愚蠢/疏忽”,但我很乐于犯错。有兴趣听到这个答案。 – tenfour 2012-04-06 12:47:51

+0

我不是形成这些开发商 – 2012-04-06 12:47:56

回答

6

VARCHAR字段需要n + 1个字节的字段小于或等于255 和所需的n + 2个字节用于字段> 255

http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html

它应该设置为255,我假设开发人员认为他们会从254节省额外的字节,但255是标准的

+1

我同意,我说255是权利,而不是254它并不真正的问题太多nowdays。当数据库第一次出来和硬盘空间非常有限,这将是一个大问题。 – Keith 2012-04-06 12:58:32

+0

半真:这取决于存储引擎。对于MyIsam来说,对于InnoDB来说并不是那么重要,对于其他的引擎来说并不知道。 – Konerak 2012-04-06 12:58:58

12

您的Google查询已经给您提示。其中第一个命中的是这样的:

https://www.vbulletin.com/forum/project.php?issueid=32655

它基本上说,上VARCHAR(255)FULLTEXT指标要求VARCHAR(254) FULLTEXT指数的两倍空间。还有更多其他的臃肿。

我认为这比保存数据表中的一个字节重要得多。

+0

gud答案,最后我知道它的重要性,thanx分享它。 – 2012-04-06 13:11:45

+0

请记住这是不足够的理由来使用VARCHAR 254,而不是255 VARCHAR。您可以创建索引来保存254个字符而不是255个字符 - 这样,您的列可以保存您需要的所有数据,并且您的索引不会臃肿。另外,这个“bug”应该真正地报告给MySQL服务器团队,以便他们可以调查并修复或解释混淆。 'vbMyAdmin'截图在该vbulletin后没有给我太多的信心... – Konerak 2012-04-06 13:17:20

+0

@Konerak请随意自己做一些实验,并报告结果。但是:即使这种“行为”(不管是否是bug)已经被固定,现在简单使用限制254的习惯将会持续很长时间。人们就是这样。 – 2012-04-06 13:26:14