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

Warum nicht varchar(max) verwenden?

Meine Antwort darauf bezieht sich nicht auf die Verwendung von Max, sondern auf den Grund für VARCHAR(max) vs. TEXT.

In meinem Buch; Zunächst einmal:Wenn Sie nicht absolut sicher sein können, dass Sie niemals etwas anderes als englischen Text codieren und die Leute sich nicht auf Namen ausländischer Orte beziehen, sollten Sie NVARCHAR oder NTEXT verwenden.

Zweitens ist es das, was die Felder Ihnen erlauben.

TEXT ist im Vergleich zu VARCHAR schwer zu aktualisieren, aber Sie erhalten den Vorteil der Volltextindizierung und viele clevere Dinge.

Andererseits hat VARCHAR(MAX) eine gewisse Mehrdeutigkeit, wenn die Größe der Zelle <8000 Zeichen beträgt, wird sie als Zeilendaten behandelt. Wenn es größer ist, wird es zu Speicherzwecken als LOB behandelt. Da Sie dies nicht wissen können, ohne RBAR abzufragen, enthält dies möglicherweise Optimierungsstrategien für Orte, an denen Sie sich über Ihre Daten und die Anzahl der Lesevorgänge sicher sein müssen.

Andernfalls, wenn Ihre Verwendung relativ banal ist und Sie keine Probleme mit der Datengröße erwarten (dh Sie verwenden .Net und müssen sich daher keine Gedanken über die Größe Ihrer Zeichenfolgen-/Zeichen*-Objekte machen). dann ist die Verwendung von VARCHAR(max) in Ordnung.