实际上,它真的重要多少?这种优化有多好?只允许100或200甚至500个字符对正常的“输入”字段有什么影响?一封电子邮件只能有320个字符,所以没问题 – 那里有一个很好的限制.但是,如果我将其设置为200,我将获得什么,因为我不期望更长的电子邮件地址.
通常我们的表不会有超过100.000行,最多20或30个这样的列.
我们现在使用sql Server 2008,但知道不同的DB如何处理这个问题会很有趣.
如果影响非常低 – 正如我所料,这将有助于得到一些好的论据(备份链接?)来说服我的DBA,这种长场妄想症并不是真的有必要.
如果是的话,我在这里学习:-)
解决方法
格式化
任何基于字段大小格式化数据的客户端工具都需要特殊的格式设置注意事项.例如,Oracle的sql * Plus默认显示Varchar2列的最大大小,即使数据只有一个字符长.相比…
create table f1 (a varchar2(4000),b varchar2(4000)); create table f2 (a varchar2(5),b varchar2(5)); insert into f1 values ('a','b'); insert into f2 values ('a','b'); select * from f1; select * from f2;
不好的数据
字段长度提供了一种捕获/防止错误数据的附加机制.接口不应尝试将3000个字符插入到100个字符的字段中,但如果该字段定义为4000个字符,则它可能就是这样.错误不会在数据输入阶段被捕获,但当另一个应用程序尝试处理数据和阻塞时,系统可能会有进一步的故障.例如,如果您以后决定索引Oracle中的字段,则会超出最大密钥长度(取决于块大小和连接).看到…
create index i1 on f1(a);
记忆
如果客户端应用程序使用最大大小分配内存,则应用程序将分配比必要内存更多的内存.必须特别考虑以避免这种情况.
文档
字段的大小提供了有关数据的文档的另一个数据点.我们可以调用所有表t1,t2,t3等以及所有字段f1,f2,f3等,但是通过指定有意义的名称,我们可以更好地理解数据.例如,如果在美国拥有客户的公司的地址表中有一个名为State的字段,该字段是两个字符,我们希望其中包含两个字符状态缩写.另一方面,如果字段是一百个字符,我们可能希望在该字段中输入完整的州名.
尽管如此,为变革做好准备似乎是明智的.仅仅因为今天所有的产品名称都适合20个字符并不意味着它们总是会.不要过火,使其成为1000,但要为合理的扩展留出空间.