你的 Nvarchar() 有多大

Pau*_*aul 5 database sql-server database-design nvarchar

设计数据库时,在决定 nvarchar 应该有多大时,您会考虑哪些决定。

如果我要制作一个地址表,我的直觉反应是地址行 1 为 nvarchar(255),就像旧的访问数据库一样。

我发现使用这个让我对旧的“字符串将被截断”感到烦恼。我知道可以通过限制输入框来防止这种情况,但如果用户确实拥有超过 255 的地址行,则应该允许这种情况。

我应该让我的 nvarchar(????) 有多大

mar*_*c_s 4

我的建议:将它们设置为您真正需要的大小。

例如,对于邮政编码列,10-20 个字符绝对足够。电话号码也是如此。电子邮件可能会更长,50-100 个字符。名字——嗯,我通常用 50 个字符就够了,名字也是如此。如果您确实需要,您总是可以轻松地扩展领域 - 这根本不是一项艰巨的任务。

将所有 varchar/nvarchar 字段设置得尽可能大确实没有意义。毕竟,SQL Server 页是固定的并且每行限制为 8060 字节。拥有 10 个 NVARCHAR(4000) 字段只是自找麻烦......(因为如果你真的尝试用太多数据填充它们,SQL Server 会向你吐槽)。

如果您确实需要一个非常大的字段,请使用 NVARCHAR/VARCHAR(MAX) - 只要它们适合,它们就会存储在您的页面中,如果它们太大,则会被发送到“溢出”存储。

NVARCHAR 与 VARCHAR:这实际上可以归结为您是否真的需要“外来”字符,例如日语、中文或其他非 ASCII 样式字符?在欧洲,甚至一些东欧字符也不能再用 VARCHAR 字段表示(它们将被去掉 hach​​ek(?拼写?)。西欧语言(英语、德语、法语等)都可以很好地使用 VARCHAR 字段来表示。 VARCHAR。

但是:NVARCHAR 在磁盘上和 SQL Server 内存中始终使用两倍的空间。如果你真的需要它,你就需要它——但你真的需要它吗?:-) 由你决定。

马克