Heim > Datenbank > MySQL-Tutorial > VARCHAR vs. TEXT in MySQL: Was sind die Hauptunterschiede?

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

Patricia Arquette
Freigeben: 2024-12-02 18:17:20
Original
341 Leute haben es durchsucht

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 einer Zeichenfolge zu speichern, die
  • nicht (vollständig) indiziert werden kann, müssen Sie die Präfixlänge

VARCHAR(M)

    Variable maximale Länge M Zeichen
  • M sollte zwischen 1 und 65535 liegen
  • belegt Speicherplatz von 1 c Byte (M ≤ 255) oder 2 c Byte (256 ≤ M ≤ 65535), wobei c die Länge der gespeicherten Zeichenfolge ist
  • indexierbar
Details

Die maximale Länge von TEXT ist festgelegt 2¹⁶-1 = 65535 Zeichen, wobei die maximale Länge von VARCHAR variabel ist, 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 für TEXT-Spalten nicht zulässig sind (mit Ausnahme von Volltextindizes). 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 MITTELTEXT 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.

Sie sollten jedoch

immer die Eingabe überprüfen (ist sie zu lang? Enthält sie seltsamen Code?), bevor Sie die Daten in der Datenbank speichern .

Bitte beachten Sie: Bei beiden Typen hängt der erforderliche 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 den zum Speichern der Daten erforderlichen Platz minimieren werden

Das obige ist der detaillierte Inhalt vonVARCHAR vs. TEXT in MySQL: Was sind die Hauptunterschiede?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage