2012-04-29 55 views
0

例如,在一個varchar數據類型中,我允許用戶名的最大字符數爲25.這是否意味着最佳列是varchar(25)選擇數據類型的正確大小?


編輯:這是否也意味着字符串的長度是字符串=的大小?

+0

或'nvarchar',如果你想支持unicode用戶名... – 2012-04-29 03:57:11

回答

1

MySQL中VARCHAR列的大小實際上並不重要!在大多數(所有?)存儲引擎下,每列所需的存儲量不會增加,因爲列的大小上升到最大值VARCHAR(255)。使用VARCHAR(256)或更高版本將會使用每行一個額外的字節,但這並不是很多。 (在這一點上,您可能要考慮使用TEXT列。)

因此,請大量使用您的列大小。避免在數據庫中硬編碼非技術限制(如用戶名中的25個字符限制) - 如果稍後改變主意,更改驗證代碼要比改變可能非常大的表更容易。例如,對於用戶名,我只需將列大小設置爲中等荒謬性,如VARCHAR(64)以允許將來擴展。只要確保如果數據庫中其他地方出現相同的「數據類型」(例如用戶名),則始終使用相同的大小。

-1

或者只是char(25)。但varchar(25)聽起來很好。

+0

我沒有downvote你,但如果我使用char不會增加額外的空間值,如果它不是完全25個字符? – Michelle 2012-04-29 03:58:06

+0

是的,但是使用varchar會爲每個條目添加一個字節,所以它的折衷 – ControlAltDel 2012-04-29 04:01:26

+0

使用'CHAR()'可以最終在輸入中添加* literal *空格字符,而不僅僅是使用額外的磁盤空間。 – duskwuff 2012-04-29 04:16:43