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

可能重复:
MySQL:大VARCHAR与TEXT?

既然VARCHAR现在可以有65k字节,那么应该用TEXT来代替VARCHAR吗?

一个长的VARCHAR以与InnoDBTEXT / BLOB字段相同的方式存储。

从存储预期的BLOB,TEXT以及长VARCHAR都是由Innodb处理相同的方式。 这就是为什么Innodb手册将其称为“长列”而不是BLOB。

资源

除非需要索引这些列(在这种情况下, VARCHAR要快得多),否则没有理由在长字段上使用VARCHAR over TEXT – 在MySQL有一些引擎特定的优化来根据长度调整数据检索,应该使用正确的列types,以利用这些。

如果您使用的是MyISAM ,请在此处深入讨论此主题。


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

VARCHAR与表内容保存在一起。 如果大小合理, VARCHAR会更快。

根据这个testing , VARCHAR大约是文本的三倍。

文本应该用于确定长度的不确定长度的string。 另外,返回TEXT字段的查询往往比它们的VARCHAR对应的要慢得多。