17

我的问题是在 SQL 中生成列时使用什么更好。nvarchar (varchar) 的大小应该乘以 2 (32, 64, 128) 还是没关系,我们可以使用完整的数字示例 '100', '50' ?

非常感谢您有理由的回答

祝福大家

4

5 回答 5

20

没有任何区别。使用适合您数据的大小。

例如 SQL Server,如果您查看记录剖析,您会发现您的大小转换为记录偏移量,这些记录偏移量取决于表中的前一条记录、空值和其他因素,特别是在采用行压缩和页面压缩的情况下考虑到。在访问该字段时,与原始声明大小关系的任何相似之处,即 2 的幂或 10 的幂,早已不复存在。此外,查询执行堆栈上更高的各种元素,如连接运算符或排序运算符或其他任何东西,也不会从 2 大小的幂中受益(我没有“证明”链接,但如果你相信我的话就可以了......) . 将数据封送回客户端时,TDS 协议也没有。而且我也看到客户没有什么好处。

于 2009-09-03T17:59:39.337 回答
10

没有理由使用 2 的倍数。设置字段以匹配数据的估计大小。

一个值得一提的数字是 255。一些数据库系统的最大 varchar 类型为 255,尽管这种情况越来越少。我在这里主要考虑现在非常旧的MySql版本。因此有时开发人员会将列大小设置为 255 或更低,以确保更高的可移植性。

于 2009-09-03T18:00:45.653 回答
3

我投票认为没关系。选择对您的应用程序最有意义的内容。使用人类可读的值。为变量和列选择好的名称。只有在非常极端的情况下,您才需要调整。当你发现你需要调整时,调整。在那之前,从商业或人类的角度来看,选择最有意义的东西。

于 2009-09-03T18:01:21.207 回答
2

将列的大小设为 2 的幂没有任何好处(N)VARCHAR。使用适合您的域模型的任何内容。

于 2009-09-03T18:00:05.313 回答
2

没关系,所有表列的值都由引擎构造以在物理页面上组合在一起

于 2009-09-03T18:00:21.863 回答