我们有一个非常大的历史表,其中包含一个最多500个UTF8字符的列,并且磁盘空间增长得非常快!
我们每天至少有200万行...而且我们想知道哪些会做得更好(主要是在存储方面,但在性能方面)? TEXT或VARCHAR(512)?
答案 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.