„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > VARCHAR vs. TEXT in MySQL: Was sind die Hauptunterschiede?

VARCHAR vs. TEXT in MySQL: Was sind die Hauptunterschiede?

Veröffentlicht am 24.01.2025
Durchsuche:452

VARCHAR vs. TEXT in MySQL: What are the key differences?

Der Unterschied zwischen VARCHAR und TEXT in MySQL

Beim Erstellen einer Tabelle in MySQL sollte die Länge der Spalte vom Typ VARCHAR klar festgelegt werden. Für den Typ TEXT muss die Länge jedoch nicht angegeben werden. Was ist also der Unterschied zwischen VARCHAR und TEXT?

TL;DR

TEXT

  • Feste maximale Länge 65535 Zeichen (maximale Länge kann nicht begrenzt werden)
  • belegte Festplatte Leerzeichen 2 c Bytes, wobei c Um die Länge der Zeichenfolge
  • zu speichern, die nicht (vollständig) indiziert werden kann, müssen Sie die Präfixlänge

VARCHAR(M)

[ angeben. &&&]
    Variable maximale Länge von M Zeichen
  • M sollte zwischen 1 und 65535 liegen.
  • Belegt Speicherplatz 1 c Bytes (M ≤ 255) oder 2 c Bytes (256 ≤ M ≤ 65535), wobei c die Länge der gespeicherten Zeichenfolge ist
  • Indexierbar
Detaillierte Beschreibung

TEXT hat eine feste maximale Länge von 2¹⁶-1 = 65535 Zeichen, während VARCHAR Die maximale Länge ist variabel und beträgt bis zu 2¹⁶-1. Daher ist die Größe von TEXT nicht wählbar, die von VARCHAR jedoch schon.

Ein weiterer Unterschied besteht darin, dass Indizes (außer Volltextindizes) für TEXT-Spalten nicht zulässig sind. Um diese Spalte zu indizieren, müssen Sie daher VARCHAR verwenden. Bitte beachten Sie jedoch, dass auch die Länge des Index begrenzt ist. Wenn die VARCHAR-Spalte zu lang ist, kann der Index nur die ersten paar Zeichen der VARCHAR-Spalte verwenden (siehe CREATE INDEX-Dokumentation).

VARCHAR sollte auch verwendet werden, wenn Sie wissen, dass die maximale Länge der möglichen Eingabezeichenfolge nur M beträgt, beispielsweise eine Telefonnummer oder ein Name. Dann können Sie VARCHAR(30) anstelle von TINYTEXT oder TEXT verwenden, sodass Sie, selbst wenn jemand versucht, den vollständigen Herr der Ringe-Text in der Spalte zu speichern, die Sie zum Speichern von Telefonnummern verwenden, nur die ersten 30 Zeichen speichern müssen: )

Bearbeiten:Wenn der in der Datenbank zu speichernde Text länger als 65535 Zeichen ist, müssen Sie MEDIUMTEXT oder auswählen LONGTEXT, aber Vorsicht: Die maximal gespeicherte Stringlänge beträgt 16 MB für MEDIUMTEXT und 4 GB für LONGTEXT. Wenn Sie LONGTEXT verwenden und die Daten über PHP abrufen (zumindest wenn Sie mysqli und nicht die Funktion „store_result“ verwenden), erhalten Sie möglicherweise einen Speicherzuordnungsfehler, da PHP versucht, 4 GB Speicher zuzuweisen, um sicherzustellen, dass die gesamte Zeichenfolge dies kann gepuffert werden. Dies kann neben PHP auch in anderen Sprachen passieren.

Allerdings sollten Sie

immerdie Eingabe überprüfen, bevor Sie die Daten in der Datenbank speichern (ist es zu lang? Enthält es seltsamen Code?). Bitte beachten Sie: Bei beiden Typen hängt der benötigte Speicherplatz nur von der Länge der gespeicherten Zeichenfolge ab, nicht von der maximalen Länge. Wenn Sie beispielsweise den Zeichensatz latin1 verwenden und den Text „Test“ in VARCHAR(30), VARCHAR(100) und TINYTEXT speichern, sind immer 5 Bytes erforderlich (1 Byte zum Speichern der Zeichenfolgenlänge, jedes Zeichen 1 Byte). . Wenn Sie den gleichen Text in einer VARCHAR(2000)- oder TEXT-Spalte speichern, benötigt er auch den gleichen Platz, aber in diesem Fall belegt er 6 Bytes (2 Bytes zum Speichern der Zeichenfolgenlänge, 1 Wort pro Zeichenfest).

Weitere Informationen finden Sie in der Dokumentation.

Abschließend möchte ich hinzufügen, dass sowohl TEXT als auch VARCHAR Datentypen variabler Länge sind, sodass sie höchstwahrscheinlich die Anzahl der zum Speichern der Daten erforderlichen Leerräume minimieren werden

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3