何时在mysql中使用TEXT而不是VARCHAR

时间:2012-07-11 21:32:20

标签: mysql

  

可能重复:
  MySQL: Large VARCHAR vs. TEXT?

由于VARCHAR现在可以有65k字节,那么应该使用TEXT代替VARCHAR吗?

2 个答案:

答案 0 :(得分:61)

VARCHAR的存储方式与TEXT中的BLOB / InnoDB字段的存储方式相同。

  

从存储预期BLOB,TEXT为   以及长VARCHAR处理相同   Innodb的方式。这就是Innodb的原因   手动称它为“长列”而非   比BLOBs。

source

除非您需要为这些列编制索引(在这种情况下VARCHAR要快得多),否则没有理由对VARCHAR使用TEXT表示长字段 - 有一些特定于引擎的优化在MySQL中根据长度调整数据检索,您应该使用正确的列类型来利用这些。

如果您正在使用MyISAM,则有关此主题的深入讨论为here


TEXTBLOB存储在表格之外,表格只有指向实际存储位置的指针。

VARCHAR与表格内联存储。 <{1}}在大小合理时更快。

根据this testVARCHAR与文本一样快三倍。

答案 1 :(得分:4)

文本应该用于非常长的不确定长度字符串。此外,返回TEXT字段的查询往往比它们的VARCHAR字段慢得多。