In Bezug auf SQL Server verstehe ich:
var
bedeutet, dass der Speicher verzögert zugewiesen ist, was bedeutet, dass er genau zu den Daten passt (beim Einfügen).MAX
bedeutet, dass es keine Größenbeschränkung gibt.
Ist es dann immer vorzuziehen, MAX
wenn Sie verwenden varchar
, da wir sowieso nicht die gesamte Größe zuweisen?
Sollten wir eine konstante Größe nur verwenden, wenn es eine Einschränkung gibt, die wir für diese DB-Spalte erzwingen möchten?
sql
sql-server
tsql
Elad Benda
quelle
quelle
VARCHAR(MAX)
Spalte erstellen.Antworten:
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:
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 .
quelle
n
mitvarchar(n)
dem Sie die Vorteile der Verwendung nutzen könnenvarchar(n)
?Suchen Sie hier nach einer guten Antwort:
Soll ich varchar (n) oder varchar (MAX) verwenden?
Die kurze Antwort lautet: Aus Speichersicht ist es dasselbe, aus Sicht der Abfrageoptimierung ist es jedoch besser, varchar (N) zu verwenden.
quelle
Microsoft empfiehlt Folgendes:
ref
quelle
Um diesbezüglich ganz explizit zu sein, lautet die Antwort NEIN . Es ist immer vorzuziehen, varchar (N) zu verwenden. Wenn Sie wissen, dass die Größe nicht variiert, dann char (N). Die MAX-Typen unterstützen die meisten nativen SQL-Funktionen nicht und können sie daher nicht unterstützen, sodass Sie keine Indizes hinzufügen, Verknüpfungen durchführen oder effektive Suchen für diese Typen durchführen können. Dies ist übrigens ein Grund, warum die Volltextsuche in SQL Server vorhanden ist.
Darüber hinaus verhindert varchar (max), dass Online-Indizes für die gesamte Tabelle ausgeführt werden können, die das Feld varchar (max) enthält. Dies wirkt sich erheblich auf die Leistung Ihres Systems aus.
Varchar (max) sollte immer nur verwendet werden, wenn bekannt ist, dass die Feldgröße über 8 KB liegt. In jedem anderen Fall muss die Größe angegeben werden. Geschieht dies nicht , ist so schlechtes Design und wird zu Performance - Problemen auf jedem führen , aber die banalsten von Systemen.
Einige Referenzen:
quelle