Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Warum kann ich nvarchar(max) nicht einschränken?

nvarchar(max) ist wirklich ein anderer Datentyp als nvarchar(integer-length) . Seine Eigenschaften ähneln eher dem veralteten text Datentyp.

Wenn nvarchar(max) value wird zu groß, wie text , wird es außerhalb gespeichert die Zeile (eine Zeile ist auf maximal 8000 Byte beschränkt) und ein Zeiger darauf wird in der Zeile selbst gespeichert. Sie können ein so großes Feld nicht effizient indizieren, und die Tatsache, dass Daten woanders gespeichert werden können, erschwert das Suchen und Scannen des Index weiter.
Eine eindeutige Einschränkung erfordert, dass ein Index erzwungen wird, und daher haben sich die SQL Server-Designer entschieden, dies nicht zuzulassen Erstellen einer eindeutigen Einschränkung dafür.