MySQL TEXT或VARCHAR

时间:2010-11-08 22:15:22

标签: mysql text storage varchar

我们有一个非常大的历史表,其中包含一个最多500个UTF8字符的列,并且磁盘空间增长得非常快!

我们每天至少有200万行...而且我们想知道哪些会做得更好(主要是在存储方面,但在性能方面)? TEXT或VARCHAR(512)?

3 个答案:

答案 0 :(得分:11)

从存储和性能的角度来看,

VARCHAR在您的情况下可能更可取。查看此oft-reposted article

答案 1 :(得分:2)

This是有用的信息;我认为一般来说,答案是varchar通常是更好的选择。

答案 2 :(得分:1)

来自MySQL手册:

  

在大多数方面,你可以考虑一个   BLOB列作为VARBINARY列   可以像你一样大。   同样,您可以考虑TEXT   列作为VARCHAR列。 BLOB和   TEXT与VARBINARY和VARCHAR不同   通过以下方式:

There is no trailing-space removal for BLOB and TEXT columns when values
     存储或检索

。在MySQL之前   5.0.3,这与VARBINARY和VARCHAR不同,尾随空格为   存储值时删除。

On comparisons, TEXT is space extended to fit the compared object,
     

与CHAR和VARCHAR完全相同。

For indexes on BLOB and TEXT columns, you must specify an index
     

前缀长度。对于CHAR和VARCHAR,a   前缀长度是可选的。见章节   7.5.1,“列索引”。

BLOB and TEXT columns cannot have DEFAULT values.

http://dev.mysql.com/doc/refman/5.0/en/blob.html