我有一个数据库表,我们称之为国家。各国都有名字,短名和大陆。我们假设世界上任何国家的最长名称都是54个字符。我应该将最大尺寸设置为54还是应该将其设置为例如64还是其他什么?我的选择会以任何方式影响查询或存储吗?
我知道这可能看起来像预先优化,但我发现自己经常选择32,64,128等,我想知道这是否重要。
由于
答案 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)用于短字符串,如邮政编码等
务实 - 找到适合自己的风格。不要过度优化,但也不要反其道而行之。
马克