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

Wie werden Varchar-Werte in einer SQL Server-Datenbank gespeichert?

Völlig sinnlose Einschränkung, wie ich sehe. Angenommen Standard-FixedVar -Format (im Gegensatz zu den Formaten, die bei Zeilen-/Seitenkomprimierung oder Spalten mit geringer Dichte verwendet werden) und vorausgesetzt, Sie sprechen von varchar(1-8000) Spalten

Alle varchar Daten werden am Ende der Zeile in einem Abschnitt mit variabler Länge gespeichert (oder in Offrow-Seiten, wenn sie nicht in die Zeile passen). Die Menge an Platz, die es in diesem Abschnitt verbraucht (und ob es außerhalb der Zeile landet oder nicht), hängt vollständig von der Länge der tatsächlichen Daten ab, nicht von der Spaltendeklaration.

SQL Server verwendet die in der Spaltendeklaration deklarierte Länge, wenn Speicher zugewiesen wird (z. B. für sort Operationen). Die Annahme, die es in diesem Fall macht, ist, dass varchar Spalten werden aufgefüllt 50 % ihrer angegebenen Größe im Durchschnitt Daher ist dies möglicherweise eine bessere Sache, wenn Sie eine Größe auswählen.