48

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

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

4

2 回答 2

64

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

Innodb 以相同的方式处理存储预期的 BLOB、TEXT 以及 long VARCHAR。这就是 Innodb 手册将其称为“长列”而不是 BLOB 的原因。

来源

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

如果您正在使用MyISAM关于该主题的深入讨论,请点击此处


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

VARCHAR与表内联存储。VARCHAR大小合理时速度更快。

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

于 2012-07-11T22:26:06.627 回答
4

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

于 2012-07-11T21:34:08.557 回答