2010-11-08 84 views
9

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

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

+1

http://www.pythian.com/news/7129/text-vs-varchar/ – 2010-11-08 22:20:58

回答

2

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

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, 前缀长度是可选的。请参见部分 7.5.1,“列索引”。

BLOB and TEXT columns cannot have DEFAULT values. 

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