nvarchar(max)
es realmente un tipo de datos diferente de nvarchar(integer-length)
. Sus características son más como el obsoleto text
tipo de datos.
Si nvarchar(max)
el valor se vuelve demasiado grande, como text
, se almacenará fuera la fila (una fila está restringida a un máximo de 8000 bytes) y un puntero a ella se almacena en la fila misma. No puede indexar de manera eficiente un campo tan grande y el hecho de que los datos se pueden almacenar en otro lugar complica aún más la búsqueda y el escaneo del índice.
Una restricción única requiere que se aplique un índice y, como resultado, los diseñadores de SQL Server decidieron no permitir creando una restricción única sobre él.