这个问题基于两个方面的性能和规模
哪个DATATYPE最好使用TEXT或VARCHAR?基于将影响和将影响的表现?
这取决于你使用它的是什么.我讨厌给出这样一个通用的答案,但这是真的.通常,尝试尽可能具体地获取数据类型.如果你的字符串永远不会超过字符的某些上限,那么请继续使用,VARCHAR
因为它会更有效率.如果您需要更多空间,请继续使用TEXT
.如果你不确定你的文本将占用多少空间,你可能应该选择TEXT
; 性能差异不是很大,并且最好是面向未来,而不是在您的需求发生变化时必须稍后更改它的风险.只是我的两分钱.
Pitarou在评论中指出,如果MySQL为您的查询创建一个临时表(请参阅此内容),则TEXT
列将不会存储在内存中,并且必须从磁盘读取,这要慢得多.(来源,页面底部.)但这对大多数查询都无关紧要.
如果有人想知道PostgreSQL如何比较,我发现这个基准测试表明CHAR,VARCHAR和TEXT都表现得同样出色.因此,如果您使用的是Postgres,那么您使用的是哪种类型并不重要.
从V 5.0.3开始,VARCHAR的限制从0-256增加到0-65,535(取决于最大行大小(65,535字节,在所有列之间共享)和使用的字符集.)
参考.http://dev.mysql.com/doc/refman/5.0/en/char.html
如果您使用固定64k长度的TEXT,即使您需要较小的限制
因此,最好使用VARCHAR,其限制高于TEXT.如果要求超过64K,请相应使用MEDIUMTEXT或LONGTEXT.
针对TEXT表的查询总是比针对VARCHAR表的查询慢3倍(平均值:VARCHAR表为0.10秒,TEXT表为0.29秒).差异是100%可重复的.
基准来自http://forums.mysql.com/read.php?24,105964,105964