Googeln um es scheint gemischte Berichte , ob die Größe eines sein VARCHAR2
Spalte in Oracle Auswirkungen Leistung oder nicht.
Ich möchte der Frage nach der VARCHAR
Größe eine kleine Wendung geben und hoffe, einen Einblick in diese zu bekommen:
Angesichts von (mehrzeiligen) Freitextfeldern ( keine kurzen Angaben wie Namen), die Sie in einer (Oracle) -Datenbank speichern möchten, sollten Sie die Kapazität ( unter Oracle) nicht ausschöpfen, sondern nur auswählen Ein kleinerer Wert wie 1024 oder 512 ist wahrscheinlich in 98% der Fälle ausreichend.VARCHAR
VARCHAR2(4000)
oracle
performance
varchar
Martin
quelle
quelle
Antworten:
Dies wirkt sich auf die Speichernutzung aus, insbesondere wenn ein Client-Programm genügend Speicher zuweisen muss, um ein Dataset zu empfangen.
Beachten Sie, dass viele Apps (insbesondere Web-Apps) UTF-8 verwenden, einen Multibyte-Zeichensatz. Daher sollten Sie Zeichen und keine Bytes berücksichtigen.
Wenn ich mehr als tausend Zeichen erwartete, würde ich aktiv über einen CLOB nachdenken. Ich würde darüber nachdenken, ob es Klartext oder irgendeine Form von Markup (Wiki / HTML?) Speichern soll, das mit Nicht-Euro-Sprachen verwendet wird. Die Fragen und Antworten hier wären zum Beispiel CLOB, aber Kommentare können in eine VARCHAR passen.
Wenn Sie ein VARCHAR maximal ausnutzen, wird es in sechs Monaten jemand wieder vergrößern wollen, und Sie würden sich selbst dafür sträuben, dass Sie kein CLOB verwenden.
quelle
Im Allgemeinen gibt es keine Überlegungen zur Leistung, obwohl es Nebenaspekte gibt , die für Sie von Bedeutung sein könnten. Das Limit für a
varchar
sollte wie jedes andere als Einschränkung aufgefasst werden - es dient dazu, eine Geschäftsregel durchzusetzen.IMO lautet die Frage, die Sie stellen sollten: "Möchte ich verhindern, dass die in diesem Feld gespeicherten Freitextdaten länger als n Byte / Zeichen sind?" Dies ist der einzige entscheidende Faktor bei der Auswahl zwischen
varchar(512)
undvarchar(4000)
.Beachten Sie, dass ich davon ausgehe, dass Sie über
varchar
den SQL-Typ sprechen - die Situation ist anders,pl/sql
und die Auswahl der Länge kann aus Gründen der Speicherzuordnung entscheidend sein.quelle
clob
, sollten Sie, wie @gary sagt, a in Betracht ziehen , nicht wahr ?Wenn ein kleinerer Wert für 98% der Fälle geeignet ist, ein Varchar2 (4000) jedoch für 100% der Fälle erforderlich ist, haben Sie keine andere Wahl, als den größeren Wert zu verwenden . Das Erstellen einer separaten Tabelle für 2% der Werte und das anschließende Koordinieren von Einfügungen / Auswahlen usw. würde die Komplexität erhöhen, die alle Speicher- oder Leistungsvorteile zunichte macht, wenn das Feld nicht erweitert wird.
quelle