I am building a table for tracking the history of particular objects in my database. Currently I have following columns:
HistoryId int IDENTITY(1,1) NOT NULL
HistoryDate datetimeoffset(7) NOT NULL
HistoryTypeId int NOT NULL
HistoryDetails nvarchar(max) NULL
For the most part each history item will be self-explanatory through the HistoryTypeId so HistoryDetails will either be Null or very small. But for a couple of History Types, the details data will be large. Is it ok to go with nvarchar(max) for all of the records or should I break it apart and have an extra column for the History Types that will require more than 64 characters (see below)? A rough estimate is that 80%-90% of records will not require more than 64 characters of detail information and there will be millions of records in the table.
HistoryId int IDENTITY(1,1) NOT NULL
HistoryDate datetimeoffset(7) NOT NULL
HistoryTypeId int NOT NULL
HistoryDetails nvarchar(64) NULL
HistoryDetailsMore nvarchar(max) NULL