数据类型在SQL Server中是否应为2的幂大小?

时间:2009-08-26 14:34:48

标签: sql-server database types

SQL Server中的数据类型有哪些好的大小?定义列时,我将大小为50的数据类型视为默认大小之一(例如:nvarchar(50),binary(50))。 50的意义是什么?我很想使用2的幂大小,那更好还是没用?

更新1 好的,谢谢你输入的人。我只是想知道为列定义数据类型大小的最佳方法。

7 个答案:

答案 0 :(得分:6)

没有理由将2的幂用于性能等。数据长度应由存储的数据大小决定。

答案 1 :(得分:5)

为什么不是2的传统权力,减去1如255 ...

严重的是,长度应符合您的要求并且适合您的数据。

没有别的:客户如何使用它,与32位字边界对齐,2的权力,生日,在天王星上升的天蝎座,掷骰子......

答案 2 :(得分:4)

你不会从使用2的权限中获得任何东西。只要你的业务需要真正需要它们,就创建字段 - 让SQL Server处理剩下的事情。

此外,由于SQL Server页面大小限制为8K(其中8060字节可用于用户数据),因此使可变长度字符串尽可能小(但从需求的角度来看,只要需要)是加。

该8K限制是一个固定的SQL Server系统设置,无法更改。

当然,SQL Server最近可以使用所谓的“溢出”页面连续处理超过8K的数据 - 但它的效率较低,所以试图保持在8K以内通常是一个好主意。

马克

答案 3 :(得分:4)

如此多的字段长度为50的原因是SQL Server默认为50,因为长度是个问题的大多数数据类型的长度。

如前所述,字段的长度应该适合于存储在那里的数据,尤其是因为SQL Server中单个记录的长度有限(大约是8000字节)。有可能超过这个限制。

此外,您的字段长度可视为文档的一部分。我不知道有多少次我遇到了懒惰的程序员,他们声称他们不需要记录,因为代码是自我记录的,然后他们就不会做那些会让代码自我记录的事情。

答案 4 :(得分:3)

字段的大小应该适合您计划存储的数据,全局默认值不是一个好主意。

答案 5 :(得分:2)

这完全取决于你存储的内容。 如果你需要x个字符,请使用x而不是任意预定义的数量。

答案 6 :(得分:2)

这是一个好主意,整行可以多次适合页面而不会留下太多的可用空间。

一行不能跨越两个页面,一个页面有8096个字节的可用空间,因此每行占用4049个字节的两行将占用两页。

请参阅docs,了解如何计算一行占用的空间。

另请注意,VARVARCHAR中的VARBINARY代表“变化”,因此如果您将1字节值放入50 - 字节列,它将采用1字节。