我正在构建一个表来跟踪数据库中特定对象的历史记录。目前我有以下列:
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