2009-11-17 28 views
4

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

我正在寻找MySQL的具体行为细节,而不是通用的软件设计建议。

回答

3

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

1

取决于你在做什么。对于一些细节请参阅相关的文档页面:

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

磁盘空间的惩罚是不是真的比你有什么例如有什么不同TEXT类型,从性能角度来看,它实际上可能会更快。

主要问题是最大行大小。请注意,存储引擎之间的确切含义不同。请查阅您的存储引擎的MySQL文档以获取最大行大小信息。

我还应该补充说可以减少行的大小,但是这取决于你的工作量,索引和行的大小,不管它对你有意义。

+1

你能解释一点在性能方面。会有大的空varchar行有任何性能问题? – erotsppa 2009-11-17 18:48:36

相关问题