Sql server 在SQL Server中,数据类型的大小是否应为2的幂?
SQL Server中数据类型的合适大小是什么?定义列时,我将大小为50的数据类型视为默认大小之一(例如:nvarchar(50)、binary(50))。50的意义是什么?我很想使用2的幂的大小,这是更好还是没用 更新1Sql server 在SQL Server中,数据类型的大小是否应为2的幂?,sql-server,database,types,Sql Server,Database,Types,SQL Server中数据类型的合适大小是什么?定义列时,我将大小为50的数据类型视为默认大小之一(例如:nvarchar(50)、binary(50))。50的意义是什么?我很想使用2的幂的大小,这是更好还是没用 更新1 好的,谢谢你们的意见。我只是想知道为列定义数据类型大小的最佳方法。字段的大小应该适合您计划存储的数据,全局默认值不是一个好主意。这完全取决于您存储的内容。 如果需要x个字符,请使用x,而不是任意预定义的数量。没有理由使用2的幂来表示性能等。数据长度应由存储数据的大小决定 为什
好的,谢谢你们的意见。我只是想知道为列定义数据类型大小的最佳方法。字段的大小应该适合您计划存储的数据,全局默认值不是一个好主意。这完全取决于您存储的内容。
如果需要x个字符,请使用x,而不是任意预定义的数量。没有理由使用2的幂来表示性能等。数据长度应由存储数据的大小决定 为什么传统的2的幂减去1,比如255 说真的,长度应该符合您的需要,并且适合您的数据
除此之外:客户端如何使用它、与32位单词边界对齐、2的幂、生日、天蝎座在天王星升起、掷骰子……最好将整行放入页面几次,而不留下太多的可用空间 一行不能跨越两页,一个A页有
8096
字节的可用空间,因此两行分别占用4049
字节将占用两页
请参见有关如何计算一行占用的空间的说明
还要注意的是
VARCHAR
中的VAR
和VARBINARY
代表“变化”,因此,如果将1
-字节值放入50
-字节列中,则只需1
字节。使用2的幂不会获得任何收益。根据业务需要将字段设置为所需的长度-其余部分由SQL Server处理
此外,由于SQL Server页面大小限制为8K(其中8060字节可用于用户数据),因此使可变长度字符串尽可能小(但从需求角度看,只要需要)是一个优势
8K限制是固定的SQL Server系统设置,无法更改
当然,现在的SQL Server可以使用所谓的“溢出”页面处理一行超过8K的数据,但效率较低,所以尽量保持在8K以内通常是个好主意
Marc许多字段的长度为50的原因是SQL Server默认为50作为大多数数据类型的长度,其中长度是一个问题 如前所述,字段的长度应该与存储在其中的数据相适应,尤其是因为SQL Server中单个记录的长度有限制(约8000字节)。有可能超过这个极限 此外,字段的长度可以视为文档的一部分。我不知道我遇到过多少次懒惰的程序员,他们声称他们不需要文档,因为代码是自文档化的,然后他们就不用费心去做那些会使代码自文档化的事情