Sql server SQL Server中很少填充的表列的合适属性?
我需要创建一个表,如图所示: 我们有一个名为'Notes'的列,这是一个很少填充的列Sql server SQL Server中很少填充的表列的合适属性?,sql-server,tsql,Sql Server,Tsql,我需要创建一个表,如图所示: 我们有一个名为'Notes'的列,这是一个很少填充的列 为列设置的最佳属性很少用SQL Server填充我建议您将该列保留为可变字符列,这样就不会浪费很少填充的列的空间。指定长度以限制将垃圾值填充到notes字段中。我把512放在这里,作为参考。你可以决定正确的长度。如果只有英文字符,请选择VARCHAR(512)。我建议使用NVARCHAR(512)也允许使用非英语字符,这样将来如果应用程序走向国际,它就可以得到支持 如果笔记可以是任意长度,并且可以容纳8000
为列设置的最佳属性很少用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。我可以看到许多你们还没有认识到的问题——你们并没有正确地规范化你们的表。您是否打算每天更新[总服务月数]?结束日期在哪里?因为员工不会永远留下来?等