2016-10-28 60 views
3

我有一個小型的社交網站,包括文章和評論。
我決定讓用戶用他們想要的任意數量的字符創建帖子,我認爲存儲這些東西的最佳數據類型是文本
但是對於評論,在大多數情況下用戶只寫一行或幾行文字。這就是爲什麼我認爲我必須將註釋字符串長度限制爲3000或甚至6000個字符的最大值。
那麼,我應該使用什麼數據類型來進行評論?
Varchar or Text字符串長度高達幾千字符的Varchar或文本數據類型

回答

4

有各種不同的地方VARCHARTEXT確實沒有區別。有些事情我說:

  • 如果最大長度超過512個字符,去TEXT
  • 千萬不要使用TINYTEXT - 它只有相對於VARCHAR(255)的負數。
  • 請勿使用VARCHAR(255);選擇一個合理的最大值,而不是255。(這是對複雜查詢中的臨時表進行的較小優化。)
  • 僅對真正固定長度的事物使用CHAR。在幾乎所有這樣的情況下,釘上CHARACTER SET ascii(或latin1)。 (否則它會採取更多的空間比您預期。
  • 使用CHARACTER SET ut8mb4。(例外越來越多的稀有。)

(對不起,我離題了。回到主題...)

我索引,InnoDB的行佈局(有4種不同的ROW_FORMATs)等,VARCHAR(513)將從TEXT基本上沒有區別。

一個爲VARCHAR的幾個論據是,它限制了店裏給出的長度。但如何往往是那個小鬼ortant?

1

VARCHAR列中的值是可變長度的字符串。長度可以指定爲0到65,535之間的值,這看起來足夠大以處理用戶的預期評論長度。

四種TEXT類型是TINYTEXT,TEXT,MEDIUMTEXT和LONGTEXT。可存儲用於每一數據類型的數據的最大量是約:

TINYTEXT 256個字節

TEXT 65,535字節〜64KB

MEDIUMTEXT 16777215字節〜16MB

LONGTEXT 4,294,967,295字節〜4GB

又見When to use TEXT in mysql instead of VARCHAR

+0

Thnx在鏈接源代碼中寫道:「VARCHAR與表格存儲在一起,當大小合理時,VARCHAR會更快。」,那麼varchar(3000)被認爲是合理的大小? – BBeta

相關問題