在数据库模式中,我经常注意到VARCHAR的大小四舍五入为字节偏移量128/256或4096。我之前也做过,其背后的想法可能是高效的。
但是,如今仍然有这样做的正当理由吗?这些天,我经常使用'50','100'或'200'作为VARCHAR大小,因为它们比较自然,通常还会在验证检查中显示给用户。
在数据库模式中,我经常注意到VARCHAR的大小四舍五入为字节偏移量128/256或4096。我之前也做过,其背后的想法可能是高效的。
但是,如今仍然有这样做的正当理由吗?这些天,我经常使用'50','100'或'200'作为VARCHAR大小,因为它们比较自然,通常还会在验证检查中显示给用户。
Answers:
我能想到的唯一合理的解释是:如果DBMS按顺序存储一列的值,并且大小未四舍五入为2的幂,则可能必须将某些元素“拆分”为硬页上的两页驱动器(例如,第n页中的前10个字节和第n + 1页中的后40个字节),在某些情况下可能导致从硬盘读取两次而不是一次。
@Jan Hudec的观点更可能是,许多程序员将“ 128”或“ 256”视为“ nice round number”,这使它们成为比137、19或100等奇数更为自然的选择。
通常,没有理由使用这些列长度。与varchar(128)列相比,varchar(100)列的性能不会得到改善。
但是,我将再次检查您使用的数据库系统,以进一步阐明限制和其他特定于供应商的警告。
例如,这是SQL Server数据库系统限制的一个很好的例子:
http://msdn.microsoft.com/en-us/library/ms186981.aspx
行的总长度比单个列的长度更重要。