如果我们将列长度定义为超过要求,会发生什么?

时间:2011-03-07 23:37:27

标签: mysql indexing query-optimization

我有一个朋友告诉我,如果我们只使用20个字符,永远不要将varchar声明为(255)。对于INT也是如此。

表现明智,这是真的吗?我可以通过减少列的大小来实现性能提升吗?当我将列声明为255时会发生什么?

2 个答案:

答案 0 :(得分:2)

在大多数情况下,使用较短的VARCHAR列不会有性能提升。

如果你有一个MEMORY表 - 一个内存临时表,MySql将为列的长度分配内存。

来自docs

  

MEMORY表使用固定长度   行存储格式。可变长度   使用存储VARCHAR等类型   一个固定的长度。

答案 1 :(得分:1)

如果您只需要TINYINT的大小,则使用INT代替TINYINT将为每行节省几个字节。

如果您总是只使用20个字符,则VARCHAR(255)将不会使用多于VARCHAR(20)的字段(另一方面CHAR(255)可能会使用更多CHAR(20)