Es gibt einen sehr guten Artikel zu diesem Thema von SO User @Remus Rusanu. Hier ist ein Ausschnitt, den ich gestohlen habe, aber ich schlage vor, Sie lesen das Ganze:
Der Codepfad, der die MAX-Typen (varchar, nvarchar und varbinary) behandelt, unterscheidet sich vom Codepfad, der die entsprechenden Typen mit nicht maximaler Länge behandelt. Die Nicht-Max-Typen können intern als gewöhnliche Zeiger- und Längenstruktur dargestellt werden. Die maximalen Typen können jedoch nicht intern als zusammenhängender Speicherbereich gespeichert werden, da sie möglicherweise bis zu 2 GB groß werden können. Sie müssen also durch eine Streaming-Schnittstelle dargestellt werden, die dem IStream von COM ähnelt. Dies überträgt sich auf jede Operation, die die maximalen Typen umfasst, einschließlich einfacher Zuweisung und Vergleich, da diese Operationen über eine Streaming-Schnittstelle komplizierter sind. Die größte Auswirkung ist im Code sichtbar, der Variablen vom Typ max zuweist und zuweist (mein erster Test), aber die Auswirkung ist bei jeder Operation sichtbar.
In dem Artikel zeigt er mehrere Beispiele, die zeigen, dass die Verwendung von varchar (n) typischerweise die Leistung verbessert.
Den gesamten Artikel finden Sie hier .