データベース内の特定のオブジェクトの履歴を追跡するためのテーブルを作成しています。現在、次の列があります。
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