2012-07-11 90 views

回答

57

VARCHAR以與/BLOB字段相同的方式存儲在InnoDB中。

從存儲前瞻性BLOB,TEXT爲 以及LONG VARCHAR由Innodb的處理相同 方式。這就是爲什麼Innodb 手冊稱之爲「長列」而不是BLOB的 。

source

除非你需要索引這些列(在這種情況下VARCHAR更快),沒有理由使用VARCHARTEXT長田 - 有在MySQL調整一些發動機特定的優化根據長度進行數據檢索,並且應該使用正確的列類型來利用這些數據。

如果您使用MyISAM,有關該主題的深入討論是here


TEXTBLOB存儲從桌子上與該表只是具有一個指針的實際存儲的位置。

VARCHAR與表格內嵌存儲。當尺寸合理時,VARCHAR會更快。

根據this test,VARCHAR大約是文本的三倍。

+8

定義「長場」。 – 2014-04-27 06:04:58

+3

@PaulBrewczynski> 768字節(請參閱Lion發佈的鏈接) – delrox 2015-06-30 16:17:34

+1

對InnoDB進行一次更正:僅當「長」(> 768字節)且僅尾部存儲在表外時,TEXT和BLOB才從InnoDB中的表中存儲到VARCHAR)。真正的區別是最大長度不同,並且使用VARCHAR,您必須提供最大長度(與系統限制65k一起執行)。 – delrox 2015-06-30 16:23:23

4

文本應該用於非常長的不確定長度的字符串。而且,返回TEXT字段的查詢往往比它們的VARCHAR對應項慢得多。

+0

在我的數據庫中,我有一個名爲Description的列。數據類型應該是VARCHAR還是TEXT?我不確定描述數據會持續多長時間,但我計劃在前端添加一個字數限制,以便它具有最大長度。 – codeinprogress 2017-02-21 05:24:34

相關問題