Gibt es einen Grund, warum wir varchar nicht immer als Maximum definieren sollten, z. B. varchar(8000)
unter SQL Server, da varchar einen der Feldgröße proportionalen Speicherplatz benötigt ?
Wenn ich jemanden beim Erstellen eines Tisches sehe, varchar(100)
sollte ich ihm sagen, dass du falsch liegst, was du tun sollst varchar(8000)
?
sql-server
varchar
Aleksandr Levchuk
quelle
quelle
Antworten:
Zusammenfassung: Tu es nicht.
quelle
Angenommen, Sie beziehen sich auf SQL Server, dann fällt mir einer ein.
Es gibt ein Limit für die Größe (8 KB) einer Zeile in einer Tabelle, und mit SQL können Sie varchar-Felder definieren, die dieses Limit theoretisch überschreiten könnten. Der Benutzer könnte also Fehler bekommen, wenn er zu viele Daten in das dafür vorgesehene Feld schreibt.
Ab SQL 2K8 können Sie dieses Limit überschreiten, es gibt jedoch Auswirkungen auf die Leistung .
Es gibt auch die Möglichkeit, die Größe auf das zu beschränken, was Sie von den Daten erwarten. Wenn Sie ein unbegrenztes Längenfeld wünschen, warum nicht mit Text oder ntext gehen?
quelle
Kommt es doch darauf an, welche Informationen im Feld gespeichert werden?
Einige Dinge werden aus einer Reihe von Gründen eine maximale Länge haben, und wenn es eine maximale Länge geben muss, sollte dies die Länge Ihres Feldes sein.
Wenn es theoretisch keine maximale Länge gibt, würde ich fragen, warum varchar verwendet wird.
quelle
Im Kontext von Oracle-Datenbanken habe ich gelernt, dass die Verwendung der kleinsten Feldgröße für Datenbankspalten immer eine Gefahr darstellt.
Wenn Sie Daten per Import-Export aus einer Datenbank mit Einzelbyte-Kollatierung in eine mit Mehrfachbyte-Kollatierung (wie Oracle XE) verschieben, kann sich die Länge in Bytes erhöhen und der Import der Daten in die durch den Import erstellten Tabellen schlägt fehl. Natürlich hat Oracle die Möglichkeit, varchar2 length entweder als char oder als byte zu definieren.
Mein Punkt hier ist, dass es nicht immer klug ist, ein Feld mit immer so klein wie möglich zu definieren. Ich habe viele Änderungstabellen gesehen, um das Feld später zu vergrößern (verursacht durch geänderte Anforderungen).
20% - 100% ungenutztes Feld mit zu haben, ist hier eine diskutierbare Option.
quelle