【发布时间】:2012-07-11 14:41:45
【问题描述】:
【问题讨论】:
-
当您需要超过 65k 个字符时。 :)
-
我认为应该是 65k 字节,而不是字符
-
哦,是的。 65k 字节。更新了我的问题。
标签: mysql
【问题讨论】:
标签: mysql
文本应该用于非常长的不确定长度的字符串。此外,返回 TEXT 字段的查询往往比对应的 VARCHAR 慢得多。
【讨论】:
长 VARCHAR 的存储方式与 InnoDB 中的 TEXT/BLOB 字段相同。
从存储准 BLOB、TEXT 为 以及只要 VARCHAR 处理相同 通过 Innodb 的方式。这就是为什么 Innodb 手册称它为“长列”而不是 比 BLOB。
除非您需要索引这些列(在这种情况下,VARCHAR 更快)没有理由使用 VARCHAR 而不是 TEXT 用于长字段 - MySQL 中有一些特定于引擎的优化来调整根据长度检索数据,您应该使用正确的列类型来利用这些。
如果您使用的是MyISAM,则有关该主题的深入讨论是here。
TEXT 和 BLOB 存储在表外,表中只有一个指向实际存储位置的指针。
VARCHAR 与表内联存储。 VARCHAR 在大小合理时会更快。
根据this test,VARCHAR 的速度大约是文本的三倍。
【讨论】:
ROW_FORMATs,并且 767 限制已增长到大约 3K。底线:经过“几个”KB,VARCHAR 和 TEXT 的处理方式相同。