2 Stimmen

Spielt die Größe der Datenbankfelder eine Rolle?

Ich habe eine Datenbanktabelle, nennen wir sie "Länder". Alle Länder haben Namen, Kurznamen und Kontinente. Nehmen wir an, dass der längste Name eines Landes auf der Welt 54 Zeichen lang ist. Soll ich die maximale Größe auf 54 oder z. B. auf 64 oder etwas anderes festlegen? Wird meine Wahl die Abfragen oder die Speicherung in irgendeiner Weise beeinflussen?

Ich weiß, das mag wie eine Voroptimierung erscheinen, aber ich wähle oft 32, 64, 128 usw., und ich würde gerne wissen, ob das eine Rolle spielt.

Gracias

3voto

Marcel Jackwerth Punkte 51964

Ein solides DBMS sollte wissen, was das Beste für es ist. Wenn Sie "54 Zeichen" benötigen, die Datenbank aber mit 64 Zeichen eine bessere Suchoptimierung durchführen kann, wird sie das Datenfeld intern automatisch erweitern. Wenn dies nicht der Fall ist, haben Sie 12 Zeichen pro Zeile eingespart.

Ich glaube nicht, dass Sie sich darüber Gedanken machen müssen, schreiben Sie einfach auf, was Sie brauchen.

2voto

Mitch Wheat Punkte 287474

Die Antworten werden RDBMS-spezifisch sein:

Wenn Sie SQL Server (ab 2000) verwenden, verbraucht ein varchar nur Platz für die tatsächlich darin gespeicherten Zeichen (plus einen kleinen Overhead), und zwar bis zur angegebenen Höchstgröße.

Als allgemeine Faustregel gilt: Optimieren Sie erst, wenn Sie ein Problem haben.

2voto

al. Punkte 484

Hängt vom Datentyp ab. In ORACLE wäre zum Beispiel ein varchar2-Datentyp eine gute Wahl für Strings mit variabler Länge. Sie müssen nur die maximale Länge der Zeichenkette definieren - varchar2(maxsize). Dies würde bedeuten, dass jede Zeichenkette mit einer Länge von bis zu 10 passen würde. Die Länge der Spalte hängt von der tatsächlich darin gespeicherten Zeichenkette ab.

Siehe. Linktext

Wenn Sie sich absolut sicher sind, dass es keinen Ländernamen gibt, der länger als 54 Zeichen ist, würde ich in Ihrem Fall einen Datentyp mit variabler Größe und der Größe 54 verwenden.

1voto

marc_s Punkte 701497

Wenn Sie SQL Server verwenden, würde ich dringend empfehlen PAS Verwendung von VARCHAR(8000) oder VARCHAR(MAX) für alle Felder..... müssen Sie hier den gesunden Menschenverstand walten lassen - machen Sie das Feld so groß, wie Sie es wahrscheinlich brauchen, fügen Sie einen kleinen Zuschlag für die unerwartete Länge hinzu, und schon sind Sie fertig :-)

Außerdem halte ich es für eine gute Idee, sich auf ein paar Längen zu beschränken, die Sie immer wieder verwenden. Ich verwende z. B. VARCHAR(255) für die meisten Felder wie Straßenanschrift oder E-Mail usw., die etwas länger sein könnten, VARCHAR(50) für Dinge wie Telefonnummern usw. und VARCHAR(20) für kurze Zeichenfolgen wie Postleitzahl und dergleichen.

Seien Sie pragmatisch - finden Sie einen Stil, der zu Ihnen passt. Übertreiben Sie es nicht mit der Optimierung, aber übertreiben Sie es auch nicht.

Marc

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