【发布时间】:2012-03-21 09:29:32
【问题描述】:
您如何决定是使用nvarchar 还是nchar?
例如,我注意到由 sqlmembership 提供程序创建的默认成员数据库将电子邮件列声明为类型 nvarchar(256)
对我来说,这似乎是电子邮件列的一个不必要的大最大值。我怀疑在正常情况下,超过 40 或 50 个字符的电子邮件非常少见。
但由于电子邮件地址等数据的长度不同,是否应始终将它们存储为 nvarchar 以消除冗余空间?
如果使用 nvarchar 作为电子邮件列。在更改电子邮件地址的情况下,如果新电子邮件比以前的电子邮件长,这会导致许多页面拆分并因此产生很大的性能成本吗?
您是否考虑过将 nchar(40) 用于电子邮件地址并牺牲存储空间以换取不分页性能成本?
或者使用 nchar(40) 会显着增加数据库大小,从而导致查询速度受到其他性能影响?
“仅当您知道填充列的数据大小时才使用 nchar”是一个合理的规则吗?
【问题讨论】:
-
通常,任何短于 5-10 个字符的字符(例如货币符号
USD、GBP等或美国各州AZ、ME等)都可以使用固定宽度的CHAR(x)或NCHAR(x)类型。除此之外,我总是选择可变长度的字符串——VARCHAR的 2 字节开销非常值得,如果你有一个VARCHAR(255)并且你的大部分条目只有 40-50 个字符长......跨度>
标签: sql-server database database-design