代码之家  ›  专栏  ›  技术社区  ›  Aaron Anodide

主关键字是nchar而其他字段是nvarchar,这是有原因的吗?

  •  3
  • Aaron Anodide  · 技术社区  · 15 年前

    我正在研究一个来自msdn的示例,它使用一个小数据库来演示数据驱动的测试,下面是简单的模式:

    CREATE TABLE dbo.LogonInfoTest
       (
       UserId nchar(256) NOT NULL PRIMARY KEY CLUSTERED,
       Password nvarchar(256) NULL,
       IsValid bit NOT NULL
       )  ON [PRIMARY]
    GO
    

    我的问题是:选择nchar作为userid的数据类型和nvarchar作为密码的数据类型的根本原因是什么?

    1 回复  |  直到 15 年前
        1
  •  5
  •   Remus Rusanu    15 年前

    没有理由。主键应该是nvarchar(256),因为我很难相信用户ID 总是 确切地 256个字符。现在这个模式可能正在磁盘上浪费(大量)空间。请注意,使用SQL Server 2008 row-compression 存储固定长度列将以可变长度存储在磁盘上(删除尾随空格),但 只有 如果启用了行压缩。