2012-04-06 121 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