使用哪种数据类型更好,TEXT还是VARCHAR?
使用哪种数据类型更好,TEXT还是VARCHAR?
这个问题基于两个方面——性能和尺寸
使用TEXT还是VARCHAR数据类型更好?基于性能,哪个会受到影响,哪个会提高?
admin 更改状态以发布 2023年5月24日
从V 5.0.3版本开始,VARCHAR的限制已从0-256增加到0-65,535(受最大行大小(65,535个字节,该大小在所有列之间共享)和使用的字符集的影响)。\n\n参考:http://dev.mysql.com/doc/refman/5.0/en/char.html。\n\n如果您使用的是固定64K长度的TEXT,即使需要更少的限制,也最好使用更高的VARCHAR限制。\n\n如果需求超过64K,则应相应地选择MEDIUMTEXT或LONGTEXT。
这取决于你使用它的目的。我不想给出一个太泛泛的答案,但这是真的。一般来说,尽量将数据类型尽可能地具体化。如果你的字符串永远不会超过某个字符的上限,那么就选择VARCHAR
,因为它稍微更有效率。如果你需要更多的空间,选择TEXT
。如果你不确定你的文本将占据多少空间,你应该选择TEXT
;性能差别不大,而且最好是未来预留,以免在需求变更时不得不更改。这只是我的个人意见。
评论中,Pitarou指出,如果MySQL为你的查询创建临时表(请看这里),TEXT
列将不能在内存中存储,而必须从磁盘中读取,这会更慢。(来源,页面底部。)尽管对于大多数查询来说,这不应该成为问题。
如果有人想知道PostgreSQL的比较情况,我找到了这个基准测试,它表明CHAR、VARCHAR和TEXT的性能都相同。所以如果你使用Postgres,使用哪种类型都没有关系。