这个问题基于两个因素性能和大小。
使用哪种数据类型更好,TEXT还是VARCHAR?从性能角度来看,哪个会受到影响,哪个会改善性能?
这个问题基于两个因素性能和大小。
使用哪种数据类型更好,TEXT还是VARCHAR?从性能角度来看,哪个会受到影响,哪个会改善性能?
这取决于你使用它的目的。我不想给出一个太泛泛的答案,但这是真的。一般来说,尽量让数据类型尽可能具体。如果你的字符串永远不会超过某个上限字符数,那么就选择VARCHAR
,因为它会更加高效。如果你需要更多的空间,那么就选择TEXT
。如果你不确定你的文本需要多少空间,那么你应该选择TEXT
;性能差异并不是很大,最好是未雨绸缪,以防后来需求变化时需要更改。以上仅为个人建议。
在评论中,Pitarou指出,如果MySQL为你的查询创建了临时表(参见此处),TEXT
列将不会存储在内存中,而必须从磁盘读取,这会更慢。(来源,页面底部)不过对于大多数查询来说,这并不重要。
如果有人想知道PostgreSQL的情况,我找到了这篇基准测试文章,显示CHAR、VARCHAR和TEXT的性能都相同。因此,如果你正在使用Postgres,无论使用哪种类型都没有关系。
对TEXT表格的查询速度总是比对VARCHAR表格慢3倍(平均:VARCHAR表格0.10秒,TEXT表格0.29秒)。差距是100%重复的。
在我看来,如果您知道字符的长度,VARCHAR 是最好的选择。它还可以减少垃圾内存分配和空间问题。TEXT 将消耗 255,而 VARCHAR 将消耗您为其提供的值。
就性能而言,VARCHAR 比 TEXT 更快。
VARCHAR是一种数据类型,它可以为每个记录设置接受的字符数限制,而文本类型(虚拟上)则没有限制。关于性能我不太确定,但我认为更具体的数据类型(如VARCHAR)会更快。
VARCHAR应该具有更好的性能,因为它有一个有限的大小。实际上,在我使用MySQL的所有经验中,VARCHAR的搜索操作总是比TEXT更快。无论如何,这是基于我的经验。您应该查看文档以了解更多信息。
这取决于你的数据类型。
如果你的字段是固定长度的(例如32个字符的哈希值),那么请使用CHAR。这样做可以提高性能,因为每个条目在每行中占用相同的空间。
VARCHAR的标准限制是255个字符,但我认为现在已经增加了。TEXT非常长,通常仅用于大型内容,例如整篇博客文章和评论,如果您不想有限制。
就大小而言,VARCHAR和TEXT之间没有(或很少)区别,因为它们只存储所需内容。CHAR字段始终占用其分配的长度。
就性能而言,VARCHAR通常更快。VARCHAR也可以进行索引,从而实现更快的搜索。
text和varchar之间有微妙的差别。我有一个如下所示的表:
CREATE TABLE `test`.`tbl`(
`kee` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
`txt` TEXT(100),
`vrchr` VARCHAR(100),
PRIMARY KEY (`kee`)
);
我插入了一行:
INSERT INTO `tbl`
(`txt`,
`vrchr`)
VALUES ('1
2
3',
'1
2
3');
列 txt 的值为:
1
2
3
而列 vrchr 的值为:
1