MS SQL Server 2000
我已经意识到在我创建的最后几个表中,我一直用2的幂来定义列的varchar长度。所以,我有一个长度为1024或512或256的列我意识到,根据表中其他列的长度,这可能根本不重要。实施这种设计有什么意义吗?我想不,但想得到你的意见。
答案 0 :(得分:3)
我想说列的大小应该代表您存储的数据类型。如果它有任何速度优势,它将是微不足道的,并且你有不正确的列长度的头痛将远远超过任何获得的东西。
您必须记住的另一件事是Sql 2000中有一个最大记录长度。我认为它大约是8192个字节。如果要以2的幂分配字段,则可能会从其他位置需要的一列添加长度。如果您的列很小并且每个表的数量不多,这将不是问题,但是具有大varchar字段的表(例如大约5000范围,这意味着您必须分配8192以遵循2惯例的强大功能)您将不得不为该字段分配比所需更多的空间,并且很可能会阻止您添加该表中所需的其他字段。
您可以违反此方案的规则,但这意味着您已停止遵循您设置的规则。这可能没问题,但这也意味着当有人回过头来看后面的整体模式时,会出现这样的问题:为什么某些列遵循一组规则来分配空间而另一些则没有。
答案 1 :(得分:1)
不,不是。记录所需的存储空间量取决于实际数据,而不是理论最大值。