TEXT
und VarChar(MAX)
sind Nicht-Unicode-Zeichen mit großer variabler Länge, die maximal 2147483647 Nicht-Unicode-Zeichen speichern können (dh die maximale Speicherkapazität beträgt: 2 GB).
Wie pro MSDN Link schlägt Microsoft mit dem Textdatentyp zu vermeiden , und es wird in zukünftigen Versionen von SQL Server entfernt. Varchar (Max) ist der vorgeschlagene Datentyp zum Speichern der großen Zeichenfolgenwerte anstelle des Textdatentyps.
- In-Row- oder Out-of-Row-Speicher
Daten einer Text
Typspalte werden außerhalb der Zeile auf separaten LOB-Datenseiten gespeichert. Die Zeile auf der Tabellendatenseite enthält nur einen 16-Byte-Zeiger auf die LOB-Datenseite, auf der die tatsächlichen Daten vorhanden sind. Während Daten einer Varchar(max)
Typspalte in einer Zeile gespeichert werden, wenn sie kleiner oder gleich 8000 Byte sind. Wenn der Varchar (max) -Spaltenwert die 8000 Bytes überschreitet, wird der Varchar (max) -Spaltenwert in separaten LOB-Datenseiten gespeichert, und die Zeile enthält nur einen 16-Byte-Zeiger auf die LOB-Datenseite, auf der die tatsächlichen Daten vorhanden sind. So In-Row
Varchar (Max) ist gut für die Suche und den Abruf.
- Unterstützte / nicht unterstützte Funktionen
Einige der Zeichenfolgenfunktionen, Operatoren oder Konstrukte funktionieren nicht in der Spalte Texttyp, aber in der Spalte VarChar (Max).
=
Entspricht dem Operator in der Spalte vom Typ VarChar (Max)
Gruppieren nach Klausel in der Spalte vom Typ VarChar (Max)
- Überlegungen zu System-E / A.
Da wir wissen, dass die Spaltenwerte vom Typ VarChar (Max) nur dann außerhalb der Zeile gespeichert werden, wenn die Länge des darin zu speichernden Werts größer als 8000 Byte ist oder nicht genügend Speicherplatz in der Zeile vorhanden ist, wird sie sonst gespeichert es in Reihe. Wenn also die meisten in der Spalte VarChar (Max) gespeicherten Werte groß und außerhalb der Zeile gespeichert sind, ähnelt das Datenabrufverhalten fast dem der Spalte Texttyp.
Wenn jedoch die meisten in Spalten vom Typ VarChar (Max) gespeicherten Werte klein genug sind, um in Zeilen gespeichert zu werden. Das Abrufen der Daten, in denen LOB-Spalten nicht enthalten sind, erfordert dann, dass mehr Datenseiten gelesen werden, da der LOB-Spaltenwert in derselben Datenseite in Zeile gespeichert wird, in der die Nicht-LOB-Spaltenwerte gespeichert sind. Wenn die Auswahlabfrage jedoch eine LOB-Spalte enthält, muss im Vergleich zu den Spalten vom Typ Text weniger Seiten für den Datenabruf gelesen werden.
Fazit
Verwenden Sie den VarChar(MAX)
Datentyp anstelle TEXT
einer guten Leistung.
Quelle