title: Should I use nvarchar(max) in place of a nvarchar(64) column or as an additional column?
body: <p>I am building a table for tracking the history of particular objects in my database. 
  Currently I have following columns:</p>
  
  <pre><code>HistoryId int IDENTITY(1,1) NOT NULL
  HistoryDate datetimeoffset(7) NOT NULL 
  HistoryTypeId int NOT NULL
  HistoryDetails nvarchar(max) NULL
  </code></pre>
  
  <p>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.</p>
  
  <pre><code>HistoryId int IDENTITY(1,1) NOT NULL
  HistoryDate datetimeoffset(7) NOT NULL 
  HistoryTypeId int NOT NULL
  HistoryDetails nvarchar(64) NULL
  HistoryDetailsMore nvarchar(max) NULL
  </code></pre>