Sql server SQL Server中很少填充的表列的合适属性?

Sql server SQL Server中很少填充的表列的合适属性?,sql-server,tsql,Sql Server,Tsql,我需要创建一个表,如图所示: 我们有一个名为'Notes'的列,这是一个很少填充的列 为列设置的最佳属性很少用SQL Server填充我建议您将该列保留为可变字符列,这样就不会浪费很少填充的列的空间。指定长度以限制将垃圾值填充到notes字段中。我把512放在这里,作为参考。你可以决定正确的长度。如果只有英文字符,请选择VARCHAR(512)。我建议使用NVARCHAR(512)也允许使用非英语字符,这样将来如果应用程序走向国际,它就可以得到支持 如果笔记可以是任意长度,并且可以容纳8000

我需要创建一个表,如图所示:

我们有一个名为'Notes'的列,这是一个很少填充的列


为列设置的最佳属性很少用SQL Server填充

我建议您将该列保留为可变字符列,这样就不会浪费很少填充的列的空间。指定长度以限制将垃圾值填充到notes字段中。我把512放在这里,作为参考。你可以决定正确的长度。如果只有英文字符,请选择
VARCHAR(512)
。我建议使用
NVARCHAR(512)
也允许使用非英语字符,这样将来如果应用程序走向国际,它就可以得到支持

如果笔记可以是任意长度,并且可以容纳8000个字符(如果是VARCHAR)和4000个字符(如果是NVARCHAR),我建议将它们存储在
VARCHAR(MAX)
NVARCHAR(MAX)

更新
正如@Dale Burrell在评论中所建议的,这些产品非常适合您的需要。稀疏列有一些限制。阅读它们,看看它们是否适合您的需要。

假设运行SQL Server 2016及更高版本,
您需要将列设置为稀疏,因为:

1-稀疏列是具有空值优化存储的普通列
2-稀疏列减少了空值的空间需求,但代价是检索非空值的开销更大。
3-当节省的空间至少为20%到40%时,考虑使用稀疏列
4-使用CREATE TABLE或ALTER TABLE语句定义稀疏列和列集
5-稀疏列可与列集和筛选索引一起使用。

CREATE TABLE HR.Employees
    (
      NO int  Primary Key,
      ProjectCode int NOT NULL ,
      FullName varchar (50)  NOT NULL ,
      StartDate DATE  NOT NULL ,
      Salary int  NOT NULL ,
      TotalSeviceMonths int  NOT NULL ,
      TotalEOSInMonths int  NOT NULL ,
      TotalEOSAnount int  NOT NULL ,
      Notes varchar (150) SPARSE NULL,

    ) 

对于SO-BELLINES on,可以提及
SPARSE
columns.OT。我可以看到许多你们还没有认识到的问题——你们并没有正确地规范化你们的表。您是否打算每天更新[总服务月数]?结束日期在哪里?因为员工不会永远留下来?等