nvarchar(max)
è in realtà un tipo di dati diverso da nvarchar(integer-length)
. Le sue caratteristiche sono più simili al deprecato text
tipo di dati.
Se nvarchar(max)
il valore diventa troppo grande, come text
, verrà archiviato all'esterno la riga (una riga è vincolata a un massimo di 8000 byte) e un puntatore ad essa viene memorizzato nella riga stessa. Non è possibile indicizzare in modo efficiente un campo così grande e il fatto che i dati possano essere archiviati da qualche altra parte complica ulteriormente la ricerca e l'analisi dell'indice.
Un vincolo univoco richiede l'applicazione di un indice e, di conseguenza, i progettisti di SQL Server hanno deciso di non consentire creando un vincolo unico su di esso.