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

Sql 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的幂来表示性能等。数据长度应由存储数据的大小决定 为什

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

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

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

这完全取决于您存储的内容。
如果需要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字节)。有可能超过这个极限

此外,字段的长度可以视为文档的一部分。我不知道我遇到过多少次懒惰的程序员,他们声称他们不需要文档,因为代码是自文档化的,然后他们就不用费心去做那些会使代码自文档化的事情