2009-08-04 5 views
3

Ich interessiere mich für NVarchar (MAX) ein guter Datentyp ist Ich möchte kurze Unicode-Strings speichern, die 1-50 Zeichen lang sind, aber die meisten von ihnen (mehr als 90%) sind 5 -10 Zeichen lang?NVarchar (MAX) für kurze Strings

Die Spalte wird nicht für Vergleichs- und Bestellabfragen verwendet. Es kann dem Index als eingeschlossene Spalte hinzugefügt werden. Erwartete Zeilenanzahl - mehr als 10 Millionen.

Irgendwelche Empfehlungen? Vielen Dank im Voraus!

Antwort

6

Warum würden Sie Nvarchar (MAX) für solche kurzen Strings verwenden? Wenn du weißt, dass die maximale Länge 50 Zeichen beträgt, mach es nvarchar (50).

Auch glaube ich nicht, dass eine Nvarchar (MAX) -Spalte in einen Index aufgenommen werden kann, da es das 900-Byte-Limit überschreiten würde.

+0

Ich denke NVARCHAR (MAX), weil NVARCHAR (50) die meiste Zeit Raumverschwendung wäre, wenn die meisten Zeichenfolgen 5-10 Zeichen lang sind. Habe ich recht? –

+6

Ich glaube, Sie verstehen den MAX-Längenbezeichner falsch. Dadurch wird die DB nicht angewiesen, nur die tatsächliche Länge der Zeichenfolge zu speichern. Stattdessen teilt es der DB mit, dass Sie bis zu der maximal erlaubten Anzahl von Zeichen speichern dürfen (2 Gig glaube ich). Die Datentypen nvarchar (und varchar) speichern nur die tatsächliche Stringlänge der Daten in diesem Feld. nvarchar (50) zeigt einfach an, dass Sie Daten bis zu 50 Zeichen speichern können, aber nicht mehr. Wenn Sie jedoch weniger als 50 speichern, wird kein Platz verschwendet. – NYSystemsAnalyst

+1

Nein. Sie verwenden nur den benötigten Speicherplatz. Obwohl NVARCHAR (50) verwendet wird, beträgt die Speicheranforderung 10 Bytes, wenn nur 5 Zeichen verwendet werden. (NVARCHAR benötigt 2 Bytes pro Zeichen.) – beach

1

Ich würde vorschlagen, dass nvarchar (50) besser geeignet ist, wenn die maximale Länge in der Tat ist 50.

1

NVARCHAR (MAX) (was ich glaube ist die gleiche wie NTEXT in den früheren Versionen von SQL Server) dient zum Speichern langer Textwerte variabler und potenziell unbegrenzter Länge.

Wenn Sie wissen, dass die Werte N Zeichen nicht überschreiten, sollten Sie NVARCHAR (N) verwenden.