Frage

  

Mögliche Duplizieren:
   Gibt es Nachteile mit einem generic varchar (255) für alle textbasierte Felder?

In MYSQL können Sie eine Länge für den VARCHAR Feldtyp wählen. Mögliche Werte sind 1-255.

Aber was sind die Vorteile, wenn Sie verwenden VARCHAR (255), dass die maximale statt VARCHAR (20)? Soweit ich weiß, hängt die Größe der Einträge nur auf die reale Länge des eingesetzten String.

Größe (Byte) = Länge + 1

Also, wenn Sie das Wort „Beispiel“ in einem VARCHAR (255) Feld haben, wäre es 8 Bytes hat. Wenn Sie es in einem VARCHAR (20) Feld haben, wäre es 8 Bytes hat, auch. Was ist der Unterschied?

Ich hoffe, dass Sie mir helfen können. Vielen Dank im Voraus!

War es hilfreich?

Lösung

Check out: Referenz für Varchar

Kurz gesagt gibt es nicht viel Unterschied, wenn Sie über die Größe von 255 in Ihrem VARCHAR gehen, die ein weiteres Byte für die Länge Präfix erfordern.

Die Länge gibt eher eine Einschränkung für die in der Spalte gespeicherten Daten als alles andere. Diese von Natur aus begrenzt die maximale Speichergröße für die Spalte als gut. IMHO sollte die Länge Sinn in Bezug auf die Daten machen. Wenn Ihr eine Social Security # Speicherung macht es keinen Sinn, die Länge auf 128 sogar einstellen, obwohl es Sie nicht bei der Lagerung kostet nichts, wenn alles, was Sie tatsächlich Speicher ist ein SSN.

Andere Tipps

Es gibt viele gute Gründe für einen Wert, der kleiner ist als die maximale Auswahl, die nicht leistungsbezogen ist. eine Größeneinstellung hilft, die Art von Daten zeigen, Sie und auch als Last-Minute-Form der Validierung kann auch wirken, sind zu speichern.

Zum Beispiel, wenn Sie eine UK Postleitzahl sind speichern, dann müssen Sie nur 8 Zeichen. diese Grenze Einstellung hilft, die Art der Daten machen deutlich, Sie speichern. Wenn Sie 255 Zeichen gewählt würde es nur Dinge verwirren.

Ich weiß nicht, über mySQL aber in SQL Server wird es lassen Sie Felder definieren, so dass die Gesamtzahl der Bytes verwendet wird, ist größer als die Gesamtzahl der Bytes, die tatsächlich in einem Datensatz gespeichert werden können. Dies ist eine schlechte Sache. Früher oder später werden Sie eine Zeile, wo die Grenze erreicht ist und die Daten nicht einfügen können.

Es ist viel besser Ihre Datenbankstruktur zu entwerfen Zeilengröße Grenzen zu berücksichtigen.

Zusätzlich ja, Sie wollen nicht die Menschen 200 Zeichen in einem Feld setzen, wo der Maximalwert 10 sein soll, wenn sie es tun, ist es fast immer schlechte Daten sind.

Sie sagen, na ja ich, dass auf der Anwendungsebene begrenzen. Aber Daten bekommen nicht in die Datenbank nur von einer Anwendung. Manchmal mehr Anwendungen verwenden, manchmal Daten importiert und manchmal wird es manuell aus dem Abfragefenster behoben (aktualisieren alle Datensätze von 10% auf den Preis zum Beispiel hinzufügen). Wenn eine dieser anderen Datenquellen nicht wissen, über die Regeln, die Sie in Ihrer Anwendung setzen, haben Sie schlecht, nutzlose Daten in der Datenbank. Die Integrität der Daten muss auf Datenbankebene durchgesetzt werden (die Sie nicht aus auch die Überprüfung nicht stoppen, bevor Sie versuchen, Daten eingeben) oder Sie haben keine Integrität. Plus es ist meine Erfahrung, dass Menschen, die zu faul sind, ihre Datenbank zu entwerfen, sind oft auch zu faul, um tatsächlich die Grenzen in der Anwendung zu setzen und es gibt keine Datenintegritätsprüfung überhaupt.

Sie haben ein Wort für Datenbanken ohne Datenintegrität -. Nutzlos

Es ist ein semantischer Unterschied (und ich glaube, dass der einzige Unterschied ist): Wenn Sie versuchen, 30 Nicht-Leerzeichen in varchar zu füllen (20), wird es zu einem Fehler, während es für varchar gelingen wird (255). So ist es in erster Linie eine zusätzliche Einschränkung.

Nun, wenn Sie für einen größeren Eintrag zulassen wollen, oder den Eintrag Größe vielleicht begrenzen.

Zum Beispiel können Sie first_name als VARCHAR 20, haben aber vielleicht street_address als VARCHAR 50 seit 20 nicht genügend Platz sein kann. Zur gleichen Zeit, können Sie zu steuern, wie groß dieser Wert erhalten.

Mit anderen Worten, Sie eine Decke gesetzt haben, wie groß ein bestimmte Wert sein kann, in der Theorie die Tabelle (und möglicherweise den Index / Index-Einträge) zu verhindern, zu groß zu bekommen.

Sie haben soeben CHAR verwenden könnte, die auch eine feste Breite ist, aber im Gegensatz zu VARCHAR, die kleiner sein kann, CHAR die Werte Pads (obwohl dies für eine schnellere SQL-Zugriff macht.

Aus einer Datenbank Perspektive Leistung klug Ich glaube nicht, es wird ein Unterschied sein.

Aber ich denke, eine Menge von der Entscheidung über die Länge zu verwenden kommt nach unten, was Sie versuchen, das System zu erreichen und zu dokumentieren nur die Daten zu akzeptieren, die sie braucht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top