我正在为追踪数据库中特定对象的历史记录建立一张表格。 目前我有以下列:
HistoryId int IDENTITY(1,1) NOT NULL
HistoryDate datetimeoffset(7) NOT NULL
HistoryTypeId int NOT NULL
HistoryDetails nvarchar(max) NULL
在大多数情况下,每个历史记录项都可以通过HistoryTypeId自我解释,因此HistoryDetails将为Null或非常小。但对于一些历史类型,详细数据将会很大。是否应该对所有记录使用nvarchar(max),还是应该将其分开,并为需要超过64个字符的历史类型添加额外的列(如下所示)?粗略估计是80%-90%的记录不需要超过64个字符的详细信息,并且表中将有数百万条记录。
HistoryId int IDENTITY(1,1) NOT NULL
HistoryDate datetimeoffset(7) NOT NULL
HistoryTypeId int NOT NULL
HistoryDetails nvarchar(64) NULL
HistoryDetailsMore nvarchar(max) NULL