在MySQL中为varchar选择一个大值有什么害处吗?

时间:2009-11-17 05:57:33

标签: sql mysql

我即将在我的表中添加一个新列,其中包含500,000个现有行。为varchar选择一个大值有什么害处吗?如何为现有行分配varchars?它占用了大量磁盘空间吗?运行时的记忆效应怎么样?

我正在寻找MySQL特定的行为细节,而不是一般的软件设计建议。

3 个答案:

答案 0 :(得分:3)

为varchar字段选择一个大值没有坏处。仅存储实际数据,并且MySQL不为每条记录分配完整的指定长度。它存储数据的实际长度以及字段,因此不需要存储任何填充或分配未使用的内存。

答案 1 :(得分:1)

取决于你在做什么。有关详细信息,请参阅相关文档页面:

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

磁盘空间的代价与您所拥有的代价没有任何不同。 TEXT类型,从性能角度来看,它实际上可能更快。

主要问题是最大行大小。请注意,存储引擎之间的确切含义不同。有关所选存储引擎的最佳行大小信息,请参阅MySQL文档。

我还应该补充一点,可以在最小化行大小方面具有性能优势,但它实际上取决于您的工作负载,索引以及行的大小,无论它是否有意义对你而言。

答案 2 :(得分:1)

MySQL VARCHAR字段存储内容,加上2个字节的长度。因此空的VARCHAR字段将占用空间来标记它们的长度。

此外,如果这是表中唯一的VARCHAR字段,并且您的存储引擎是MyISAM,则会强制生成动态行格式,这可能会导致性能下降(测试将确认)。

http://dev.mysql.com/doc/refman/5.0/en/column-count-limit.html

http://dev.mysql.com/doc/refman/5.0/en/dynamic-format.html