VARCHAR
wird inline mit der Tabelle gespeichert. VARCHAR
schneller ist, wenn die Größe angemessen ist, wobei der Kompromiss, der schneller wäre, von Ihren Daten und Ihrer Hardware abhängt, möchten Sie ein reales Szenario mit Ihren Daten vergleichen.
Die effektive maximale Anzahl von Bytes, die in einem VARCHAR
gespeichert werden können oder VARBINARY
Spalte unterliegt der maximalen Zeilengröße von 65,535 bytes
, die von allen Spalten geteilt wird.
Zum Beispiel ein VARCHAR(255)
Spalte kann eine Zeichenfolge mit einer maximalen Länge von 255 Zeichen enthalten. Angenommen, die Spalte verwendet den Zeichensatz latin1 (ein Byte pro Zeichen), ist der tatsächlich erforderliche Speicherplatz die Länge der Zeichenfolge (L) plus ein Byte zum Aufzeichnen der Länge der Zeichenfolge. Für die Zeichenfolge 'abcd'
, L
ist 4
und die Speicheranforderung beträgt fünf Bytes. Wenn dieselbe Spalte stattdessen für die Verwendung von ucs2
deklariert wird Double-Byte-Zeichensatz beträgt der Speicherbedarf 10 Bytes:Die Länge von 'abcd' beträgt acht Bytes und die Spalte benötigt zwei Bytes zum Speichern von Längen, da die maximale Länge größer als 255 ist (bis zu 510 bytes
).
Ziehen Sie für größere Daten die Verwendung von TEXT
in Betracht oder BLOB
. TEXT
und BLOB
Spalten sind in der NDB
anders implementiert Speicher-Engine, wobei jede Zeile in einem TEXT
steht Säule besteht aus zwei getrennten Teilen. Einer davon hat die feste Größe (256 bytes)
, und wird tatsächlich in der ursprünglichen Tabelle gespeichert. Der andere besteht aus Daten, die 256 bytes
überschreiten , die in einer verborgenen Tabelle gespeichert ist. Die Zeilen in dieser zweiten Tabelle sind immer 2,000 bytes
lang. Das bedeutet, dass die Größe eines TEXT
Spalte ist 256
wenn size <= 256
(wobei size die Größe der Zeile darstellt); andernfalls ist die Größe 256 + size + (2000 – (size – 256) % 2000)
.
http://dev.mysql.com/doc/refman /5.6/en/storage-requirements.html
Hängt von Ihrer Datenbankbeziehung ab, wenn Sie diese Felder selten in Abfragen verwenden. Zum Beispiel für zusätzliche Informationen. Getrennte Tabelle erstellen ist eine gute Option (normalisieren).
HINWEISE: VARCHAR
ist bei CHAR
anders . Wenn Sie VARCHAR(250)
erstellen und fügen Sie nur 20
ein Zeichen darauf, dann dauert es 5 bytes
+ L
anders bei CHAR(250)
, es dauert 250 bytes
+ L
für gleichen Zustand.