数据库字段的大小是否重要?

时间:2009-04-12 14:22:56

标签: database database-design

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

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

由于

4 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

答案将特定于RDBMS:

如果您使用的是SQL Server(2000以后版本),则varchar仅为存储在其中的实际字符使用空间(加上一小部分开销),最大为声明的最大大小。

作为一般经验法则,在遇到问题之前不要进行优化。

答案 2 :(得分:2)

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

请参阅。 link text

在您的情况下,如果您绝对确定没有超过54个字符的国家/地区名称,我将使用大小为54的可变大小数据类型。

答案 3 :(得分:1)

如果你正在使用SQL Server,我强烈建议 NOT 使用VARCHAR(8000)或VARCHAR(MAX)来表示所有字段......你需要让常识在这里占上风 - 让你认为你可能需要它的领域一样大,为意想不到的长度添加一点额外的东西,你就完成了: - )

另外,我认为将它保持在你一遍又一遍使用的几个长度是个好主意。例如。我对大多数字段使用VARCHAR(255),如街道地址或电子邮件等可能会更长一些,VARCHAR(50)用于电话号码等,而VARCHAR(20)用于短字符串,如邮政编码等

务实 - 找到适合自己的风格。不要过度优化,但也不要反其道而行之。

马克