2010-08-24 56 views
11

我當時想創建一個個人筆記數據庫,用HTML或文本存儲筆記時間很長。 VARCHARTEXT字段之間的區別是什麼?哪一個可以更有效地使用?MySQL:用於存儲長備註的最有效的數據類型?

我認爲VARCHAR的最大值是65535個字符,如果我將包含大於此值的任何東西,我無法將頭包住。我想知道是否可以自動壓縮某種數據類型,但我不認爲這很簡單(因爲它在實際使用中會花費太多的CPU時間)。

回答

10

如果你不知道,如果文本總是會少於65535個字,則不要冒險到使用varchar。我認爲你絕對應該使用mediumtext甚至longtext類型但增加性能將它們放置到單獨的表中。例如,創建表Notes將包含註釋ID,標題,創建日期和創建它的用戶以及NotesText表,該表將與Notes相關聯,但將僅包含註釋ID和文本列。這將防止查詢文本類型列,並在不需要時從數據庫中檢索它。

+0

我發現這是最相關的答案,我很想把它放到另一張表,只是爲了實踐效率,非常感謝。 – John 2010-08-24 10:31:22

+0

感謝您的接受;)祝您的項目順利! – 2010-08-24 10:40:52

+0

這是錯誤的。 Mysql中的文本限制爲相同的65535個字符。 – BarsMonster 2010-08-24 11:28:54

2

AFAIR TEXT被限制在65K字,MEDIUMTEXT是1600萬,而LONGTEXT是最大4GB :-)

+1

在存儲它之前,沒有什麼限制你壓縮和解壓縮數據(例如,通過gzip)。在這種情況下,你將不得不使用BLOB類型。 – BarsMonster 2010-08-24 10:21:17

+0

Def。會考慮這樣做,但是如果不能查看文本並在查詢中使用它們,那麼會非常煩人,但我肯定會壓縮4MB +文件,謝謝! – John 2010-08-24 10:32:07

2

VARCHAR的最大長度不是65535字節;該行的最大長度是該字節數,並且VARCHAR的最大長度將取決於表中的其他列。因此,如果您可能需要很多字符,則需要一個TEXT或BLOB列。它們分別保存在磁盤上,所以速度較慢(不是CPU使用率,而是總時間)。

相關問題