349 Stimmen

Bewährte Praktiken für SQL varchar-Spaltenlänge

Jedes Mal, wenn Sie eine neue SQL-Tabelle einrichten oder eine neue varchar Spalte in eine bestehende Tabelle einfügen möchte, frage ich mich eines: Was ist der beste Wert für die length .

Nehmen wir also an, Sie haben eine Spalte namens name vom Typ varchar . Sie müssen also die Länge wählen. Mir fällt kein Name ein, der mehr als 20 Zeichen hat, aber man kann ja nie wissen. Aber anstatt 20 zu verwenden, runde ich immer auf die nächste 2^n-Zahl auf. In diesem Fall würde ich 32 als Länge wählen. Ich tue das, weil aus der Sicht eines Informatikers eine Zahl 2^n besser aussieht even Ich gehe einfach davon aus, dass die zugrunde liegende Architektur mit diesen Zahlen etwas besser umgehen kann als mit anderen.

Auf der anderen Seite setzt z.B. MSSQL Server den Standardlängenwert auf 50, wenn Sie eine varchar-Spalte erstellen wollen. Das macht mich nachdenklich. Warum 50? Ist es nur eine zufällige Zahl, oder basiert sie auf der durchschnittlichen Spaltenlänge, oder was?

Es könnte auch sein - oder ist wahrscheinlich - dass verschiedene SQL-Server-Implementierungen (wie MySQL, MSSQL, Postgres, ...) unterschiedliche beste Spaltenlängenwerte haben.

7voto

onedaywhen Punkte 52850

Erkundigen Sie sich immer bei Ihrem Experten für den Geschäftsbereich. Wenn Sie das sind, suchen Sie nach einem Branchenstandard. Wenn es sich bei der fraglichen Domäne beispielsweise um den Familiennamen einer natürlichen Person handelt, würde ich mich für ein britisches Unternehmen an die UK Govtalk Datenstandardkatalog für Personeninformationen und entdecken, dass ein Familienname zwischen 1 und 35 Zeichen lang sein kann.

5voto

user1041892 Punkte 121

Ich habe das in letzter Zeit nicht überprüft, aber ich weiß, dass der JDBC-Treiber in der Vergangenheit mit Oracle während der Abfrageausführung einen Teil des Speichers reserviert hat, um die zurückkommende Ergebnismenge zu speichern. Die Größe des Speicherabschnitts hängt von den Spaltendefinitionen und der Abrufgröße ab. Die Länge der varchar2-Spalten beeinflusst also, wie viel Speicher reserviert wird. Dies führte bei mir vor Jahren zu ernsthaften Leistungsproblemen, da wir immer varchar2(4000) (die damalige Höchstgrenze) verwendeten und die Garbage Collection viel weniger effizient war als heute.

-2voto

Dale Willis Punkte 1

In gewisser Weise haben Sie recht, obwohl alles, was weniger als 2^8 Zeichen hat, immer noch als ein Datenbyte registriert wird.

Wenn Sie das Basiszeichen berücksichtigen, verbrauchen alle VARCHAR < 255 die gleiche Menge an Platz.

255 ist eine gute Basisdefinition, es sei denn, Sie möchten übermäßige Eingaben einschränken.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X