何时在mysql中使用TEXT而不是VARCHAR
可能重复:
MySQL:大VARCHAR与TEXT?
既然VARCHAR
现在可以有65k字节,那么应该用TEXT
来代替VARCHAR
吗?
一个长的VARCHAR
以与InnoDB
的TEXT
/ BLOB
字段相同的方式存储。
从存储预期的BLOB,TEXT以及长VARCHAR都是由Innodb处理相同的方式。 这就是为什么Innodb手册将其称为“长列”而不是BLOB。
资源
除非需要索引这些列(在这种情况下, VARCHAR
要快得多),否则没有理由在长字段上使用VARCHAR
over TEXT
– 在MySQL
有一些引擎特定的优化来根据长度调整数据检索,应该使用正确的列types,以利用这些。
如果您使用的是MyISAM
,请在此处深入讨论此主题。
TEXT
和BLOB
存储在表格外,表格只有一个指向实际存储位置的指针。
VARCHAR
与表内容保存在一起。 如果大小合理, VARCHAR
会更快。
根据这个testing , VARCHAR
大约是文本的三倍。
文本应该用于确定长度的不确定长度的string。 另外,返回TEXT字段的查询往往比它们的VARCHAR对应的要慢得多。