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

When to use TEXT in mysql instead of VARCHAR

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
MySQL: Large VARCHAR vs. TEXT?

既然VARCHAR现在可以有65K字节,那么什么时候应该使用TEXT而不是VARCHAR呢?


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

From storage prospective BLOB, TEXT as
well as long VARCHAR are handled same
way by Innodb. This is why Innodb
manual calls it"long columns" rather
than BLOBs.

来源

除非需要索引这些列(在这种情况下,VARCHAR快得多),否则没有理由对长字段使用VARCHAR而不是TEXTMySQL中有一些特定于引擎的优化,可以根据长度调整数据检索,并且应该使用正确的列类型来利用这些优化。

如果您使用的是MyISAM,这里将对这个主题进行深入的讨论。

TEXTBLOB在表外存储,表中只有一个指向实际存储位置的指针。

VARCHAR与表内联存储。尺寸合理时,VARCHAR速度更快。

根据这个测试,VARCHAR的速度大约是文本速度的三倍。


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