La stessa domanda è stata posta sui forum MSDN:
- Varchar(max) vs Varchar(255)
Dal post originale (molte più informazioni lì):
Quando si archiviano i dati in una colonna VARCHAR(N), i valori vengono archiviati fisicamente allo stesso modo. Ma quando lo memorizzi in una colonna VARCHAR(MAX), dietro lo schermo i dati vengono gestiti come un valore TEXT. Quindi è necessaria un'elaborazione aggiuntiva quando si ha a che fare con un valore VARCHAR(MAX). (solo se la taglia supera 8000)
VARCHAR(MAX) o NVARCHAR(MAX) è considerato un 'tipo di valore grande'. I tipi di valore di grandi dimensioni vengono generalmente archiviati "fuori riga". Significa che la riga di dati avrà un puntatore a un'altra posizione in cui è archiviato il 'valore grande'...