由于VARCHAR
现在可以有65k字节,那么应该使用TEXT
代替VARCHAR
吗?
答案 0 :(得分:61)
长VARCHAR
的存储方式与TEXT
中的BLOB
/ InnoDB
字段的存储方式相同。
从存储预期BLOB,TEXT为 以及长VARCHAR处理相同 Innodb的方式。这就是Innodb的原因 手动称它为“长列”而非 比BLOBs。
除非您需要为这些列编制索引(在这种情况下VARCHAR
要快得多),否则没有理由对VARCHAR
使用TEXT
表示长字段 - 有一些特定于引擎的优化在MySQL
中根据长度调整数据检索,您应该使用正确的列类型来利用这些。
如果您正在使用MyISAM
,则有关此主题的深入讨论为here。
TEXT
和BLOB
存储在表格之外,表格只有指向实际存储位置的指针。
VARCHAR
与表格内联存储。 <{1}}在大小合理时更快。
根据this test,VARCHAR
与文本一样快三倍。
答案 1 :(得分:4)
文本应该用于非常长的不确定长度字符串。此外,返回TEXT字段的查询往往比它们的VARCHAR字段慢得多。