SQL Server中的数据类型有哪些好的大小?定义列时,我将大小为50的数据类型视为默认大小之一(例如:nvarchar(50),binary(50))。 50的意义是什么?我很想使用2的幂大小,那更好还是没用?
更新1 好的,谢谢你输入的人。我只是想知道为列定义数据类型大小的最佳方法。
答案 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,了解如何计算一行占用的空间。
另请注意,VAR
和VARCHAR
中的VARBINARY
代表“变化”,因此如果您将1
字节值放入50
- 字节列,它将采用1
字节。