2009-04-12 88 views
2

我有一个数据库表,我们称之为国家。各国都有名字,简称和大陆。假设世界上任何国家最长的名字长达54个字符。我应该将最大尺寸设置为54还是应该将其设置为64还是别的?我的选择会以任何方式影响查询或存储吗?数据库字段的大小是否重要?

我知道这可能看起来像预优化,但我发现自己经常选择32,64,128等,我想知道这是否重要。

感谢

回答

3

一个坚实的DBMS应该知道什么是最好的。如果您需要“54个字符”,但数据库可以使用64个字符进行更好的搜索优化,它将自动在内部扩展数据字段。如果没有,你将每行节省12个字符。

我不认为这是你应该担心的事情,只是写下你需要的东西。

2

答案将是特定于RDBMS:

如果使用SQL Server(2000年起),一个varchar只使用空间存储在它的实际字符(还有一个小的开销),同比增长到宣布的最大尺寸。

作为一般的经验法则,不要优化,直到你有问题。

1

如果您使用的是SQL Server,我强烈建议使用而不是所有字段都使用VARCHAR(8000)或VARCHAR(MAX).....您需要让常识在这里占上风 - 将字段设置为大,因为你认为你可能需要它,添加一些额外的意想不到的长度,你完成:-)

此外,我认为这是一个好主意,保持它的几个长度,你用过并重新开始。例如。对于街道地址或电子邮件等大部分字段,我可以使用VARCHAR(255),VARCHAR(50)用于诸如电话号码之类的内容,VARCHAR(20)用于诸如邮政编码等短字符串。

务实一点 - 找到适合你的风格。不要过度优化,但不要以另一种方式坚持下去。

Marc

+0

那么,什么是背后采用255而不是256的理由可变大小数据类型? – 2009-04-12 14:37:30

2

取决于数据类型。例如在ORACLE中 - 对于可变长度的字符串,varchar2数据类型将是一个不错的选择。您只需要定义字符串的最大长度 - varchar2(maxsize)。这意味着任何长度高达10的字符串都可以适用。列的长度取决于存储在其中的实际字符串。

参见。 link text

在你的情况,如果你绝对相信任何一个国家的名字超过54个字符那里,我会用大小​​54

相关问题