• Not quite. If you can guarantee that you will not need to store values greater than 8000 chars, then go for a varchar with a fixed maximum length (of the maximum size your business will need for the column).

    This is for a few reasons:

    1) Although Varchar(n) and Varchar(max) can be stored in exactly the same way when the actual length is < 8000, the optimiser will treat them differently to allow for the possibility of out-of-row values. So it can be faster to query varchar(n) columns.

    2) It's a good way to validate that input data is sensible - personally, I wouldn't want someone to be able to enter 2GB worth of chars into an address field for example

    3) Why would you not want the option of indexing the column in the future if you know the values will always be small enough to do so