可能重复:
MySQL:大 VARCHAR 与 TEXT?
既然VARCHAR
现在可以有 65k 字节,那么什么时候应该TEXT
使用 then 而不是VARCHAR
?
longVARCHAR
的存储方式与TEXT
/BLOB
中的字段相同InnoDB
。
Innodb 以相同的方式处理存储预期的 BLOB、TEXT 以及 long VARCHAR。这就是 Innodb 手册将其称为“长列”而不是 BLOB 的原因。
除非您需要索引这些列(在这种情况下VARCHAR
要快得多),否则没有理由对长字段使用VARCHAR
over TEXT
- 有一些引擎特定的优化MySQL
可以根据长度调整数据检索,您应该使用正确的列类型利用这些。
如果您正在使用MyISAM
关于该主题的深入讨论,请点击此处。
TEXT
并且BLOB
存储在表外,表中只有一个指向实际存储位置的指针。
VARCHAR
与表内联存储。VARCHAR
大小合理时速度更快。
根据这个测试,VARCHAR
大约是文本的三倍。
文本应该用于非常长的不确定长度的字符串。此外,返回 TEXT 字段的查询往往比对应的 VARCHAR 慢得多。