Heim Datenbank MySQL-Tutorial Der Unterschied zwischen CHAR und VARCHAR in MySQL

Der Unterschied zwischen CHAR und VARCHAR in MySQL

Apr 30, 2020 am 11:07 AM
mysql

Die oben genannten

VARCHAR und CHAR sind die beiden Hauptzeichenfolgentypen. Leider ist es schwierig, genau zu erklären, wie diese Werte auf der Festplatte und im Speicher gespeichert werden, da dies von der spezifischen Implementierung der Speicher-Engine abhängt. In der folgenden Beschreibung wird davon ausgegangen, dass die verwendete Speicher-Engine InnoDB und/oder MyISAM ist. Wenn Sie diese beiden Speicher-Engines nicht verwenden, lesen Sie bitte die Dokumentation der von Ihnen verwendeten Speicher-Engine.

Sehen wir uns zunächst an, wie VARCHAR- und CHAR-Werte normalerweise auf der Festplatte gespeichert werden. Bitte beachten Sie, dass die Art und Weise, wie die Speicher-Engine CHAR- oder VARCHAR-Werte im Speicher speichert, anders sein kann als auf der Festplatte, sodass die vom MySQL-Server aus der Speicher-Engine gelesenen Werte möglicherweise in ein anderes Speicherformat konvertiert werden müssen.

VARCHAR-Typ

VARCHAR-Typ wird zum Speichern von Zeichenfolgen variabler Länge verwendet und ist der häufigste Zeichenfolgendatentyp. Er ist platzsparender als Typen mit fester Länge, da er nur den erforderlichen Platz beansprucht (kürzere Zeichenfolgen verbrauchen beispielsweise weniger Platz). Es gibt eine Ausnahme: Wenn die MySQL-Tabelle mit ROW_FORMAT=FIXED erstellt wird, wird jede Zeile mit fester Länge gespeichert, wodurch Speicherplatz verschwendet wird.

VARCHAR benötigt 1 oder 2 zusätzliche Bytes, um die Länge der Zeichenfolge aufzuzeichnen: Wenn die maximale Länge der Spalte kleiner oder gleich 255 Bytes ist, wird nur 1 Byte zur Darstellung verwendet, andernfalls 2 Bytes gebraucht. Unter der Annahme, dass der Zeichensatz latin1 verwendet wird, benötigt eine VARCHAR(10)-Spalte 11 Byte Speicherplatz. Die Spalte VARCHAR(1000) benötigt 1002 Byte, da 2 Byte zum Speichern der Längeninformationen benötigt werden.

VARCHAR spart Speicherplatz und trägt so auch zur Leistung bei. Da die Zeile jedoch eine variable Länge hat, kann es sein, dass die Zeile beim UPDATE länger als das Original wird, was zusätzliche Arbeit erfordert. Wenn der von einer Zeile belegte Platz wächst und auf der Seite kein Platz mehr zum Speichern vorhanden ist, gehen verschiedene Speicher-Engines unterschiedlich mit dieser Situation um. Beispielsweise teilt MyISAM die Zeilen zur Speicherung in verschiedene Fragmente auf, und InnoDB muss die Seite aufteilen, damit die Zeilen in die Seite passen. Einige andere Speicher-Engines aktualisieren die Daten möglicherweise nie am ursprünglichen Datenspeicherort.

VARCHAR anwendbare Situationen

Es ist angemessen, VARCHAR in den folgenden Situationen anzuwenden:

Die maximale Länge der Zeichenfolgenspalte ist viel größer als die durchschnittliche Länge

Spalten werden selten aktualisiert, daher stellt Fragmentierung kein Problem dar

Es wird ein komplexer Zeichensatz wie UTF-8 verwendet, jedes Zeichen wird mit einer anderen Anzahl von Bytes gespeichert

CHAR-Typ

Der CHAR-Typ hat eine feste Länge: MySQL weist immer genügend Speicherplatz entsprechend der definierten String-Länge zu. Beim Speichern von CHAR-Werten entfernt MySQL alle nachgestellten Leerzeichen. Der CHAR-Wert wird nach Bedarf mit Leerzeichen aufgefüllt, um den Vergleich zu erleichtern.

CHAR eignet sich zum Speichern sehr kurzer Zeichenfolgen oder alle Werte sind nahezu gleich lang. CHAR eignet sich beispielsweise ideal zum Speichern des MD5-Werts eines Passworts, da es sich um einen Wert fester Länge handelt. Für Daten, die sich häufig ändern, ist CHAR auch besser als VARCHAR, da der CHAR-Typ mit fester Länge nicht anfällig für Fragmentierung ist. CHAR ist außerdem für sehr kurze Spalten speicherplatzeffizienter als VARCHAR. CHAR(1) wird beispielsweise nur zum Speichern von Y- und N-Werten verwendet. Wenn ein Einzelbyte-Zeichensatz verwendet wird, ist nur ein Byte erforderlich, VARCHAR(1) erfordert jedoch zwei Bytes, da für den Datensatz ein zusätzliches Byte vorhanden ist Länge. .

Test

Das Folgende ist ein Beispiel, um den Unterschied im Verhalten zwischen CHAR und VARCHAR zu veranschaulichen. Zuerst erstellen wir eine Tabelle mit nur einem CHAR(10)-Feld. und Fügen Sie einige Werte ein:

CREATE TABLE char_test
(
    char_col CHAR(10)
);
 
INSERT INTO char_test 
VALUES
    ('string1').
    ('  string2').
    ('string3  ');
Nach dem Login kopieren

Wenn wir diese Werte abrufen, werden wir feststellen, dass die Leerzeichen am Ende von string3 abgeschnitten sind.

SELECT CONCAT("'", char_col, "'")
FROM char_test;
Nach dem Login kopieren

Ausführungsergebnis:

Der Unterschied zwischen CHAR und VARCHAR in MySQL

Wenn Sie das Feld VARCHAR(10) verwenden, um denselben Wert zu speichern, können Sie das folgende Ergebnis erhalten:

CREATE TABLE varchar_test
(
    varchar_col VARCHAR(10)
);
 
INSERT INTO varchar_test 
VALUES
    ('string1').
    ('  string2').
    ('string3  ');
 
SELECT CONCAT("'", varchar_col, "'")
FROM varchar_test;
Nach dem Login kopieren

Ausführungsergebnis

Der Unterschied zwischen CHAR und VARCHAR in MySQL

Der Unterschied zwischen VARCHAR(5) und VARCHAR(200)

Wenn wir VARCHAR(5 ) und VARCHAR(200 ) zum Speichern von „Hallo“, wissen wir, dass der Speicherplatzaufwand bei beiden gleich ist. Können wir also die Länge von VARCHAR immer groß halten? Gibt es Vorteile bei der Verwendung kürzerer Spalten?

Es stellt sich als großer Vorteil heraus. Längere Spalten verbrauchen mehr Speicher, da MySQL normalerweise Speicherblöcke mit fester Größe für die Speicherung interner Werte zuweist. Dies ist besonders schlimm, wenn temporäre In-Memory-Tabellen zum Sortieren oder für Vorgänge verwendet werden. Ebenso schlimm ist es beim Sortieren mithilfe temporärer Festplattentabellen.

Die beste Strategie besteht also darin, nur den Platz zuzuweisen, den Sie wirklich benötigen.

Zusammenfassung

Wenn wir einen Typ für ein Zeichenfolgentypfeld auswählen, können wir bei der Entscheidung, ob wir VARCHAR oder CHAR wählen, die folgenden Aspekte berücksichtigen:

Gibt es einen kleinen Unterschied zwischen der durchschnittlichen Länge und der maximalen Länge des Felddatensatzes? Wenn der Unterschied gering ist, geben Sie dem Typ CHAR Vorrang. Andernfalls ziehen Sie den Typ VARCHAR in Betracht.

Wenn das Feld einen Hash-Wert nach MD5 oder einen Wert fester Länge speichert, wird der CHAR-Typ bevorzugt.

Wenn das Feld häufig aktualisiert werden muss, erhält der CHAR-Typ Vorrang. Da der CHAR-Typ eine feste Länge hat, ist er nicht anfällig für Fragmentierung.

Für Feldwerte, die sehr kleine Informationen speichern, wie z. B. das Geschlecht, wird der CHAR-Typ bevorzugt, da der VARCHAR-Typ zusätzliche Bytes zum Speichern von Informationen zur Zeichenfolgenlänge belegt.

Mit einem Wort: Wenn wir den CHAR-Typ auswählen können oder wenn der Platzverbrauch relativ nicht im Mittelpunkt der Einflussfaktoren steht, versuchen Sie, den CHAR-Typ zu wählen, da der CHAR-Typ in anderen Aspekten mehr oder weniger hat weniger Vorteile. Wenn der Platzverbrauch zu einem großen Einflussfaktor wird, werden wir die Verwendung des Typs VARCHAR in Betracht ziehen.

Empfohlenes Tutorial: „MySQL-Tutorial

Das obige ist der detaillierte Inhalt vonDer Unterschied zwischen CHAR und VARCHAR in MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

MySQL: Die einfache Datenverwaltung für Anfänger MySQL: Die einfache Datenverwaltung für Anfänger Apr 09, 2025 am 12:07 AM

MySQL ist für Anfänger geeignet, da es einfach zu installieren, leistungsfähig und einfach zu verwalten ist. 1. Einfache Installation und Konfiguration, geeignet für eine Vielzahl von Betriebssystemen. 2. Unterstützung grundlegender Vorgänge wie Erstellen von Datenbanken und Tabellen, Einfügen, Abfragen, Aktualisieren und Löschen von Daten. 3. Bereitstellung fortgeschrittener Funktionen wie Join Operations und Unterabfragen. 4. Die Leistung kann durch Indexierung, Abfrageoptimierung und Tabellenpartitionierung verbessert werden. 5. Backup-, Wiederherstellungs- und Sicherheitsmaßnahmen unterstützen, um die Datensicherheit und -konsistenz zu gewährleisten.

MySQL: Einfache Konzepte für einfaches Lernen MySQL: Einfache Konzepte für einfaches Lernen Apr 10, 2025 am 09:29 AM

MySQL ist ein Open Source Relational Database Management System. 1) Datenbank und Tabellen erstellen: Verwenden Sie die Befehle erstellte und creatEtable. 2) Grundlegende Vorgänge: Einfügen, aktualisieren, löschen und auswählen. 3) Fortgeschrittene Operationen: Join-, Unterabfrage- und Transaktionsverarbeitung. 4) Debugging -Fähigkeiten: Syntax, Datentyp und Berechtigungen überprüfen. 5) Optimierungsvorschläge: Verwenden Sie Indizes, vermeiden Sie ausgewählt* und verwenden Sie Transaktionen.

Wie man phpmyadmin öffnet Wie man phpmyadmin öffnet Apr 10, 2025 pm 10:51 PM

Sie können PhpMyAdmin in den folgenden Schritten öffnen: 1. Melden Sie sich beim Website -Bedienfeld an; 2. Finden und klicken Sie auf das Symbol phpmyadmin. 3. Geben Sie MySQL -Anmeldeinformationen ein; 4. Klicken Sie auf "Login".

So erstellen Sie Navicat Premium So erstellen Sie Navicat Premium Apr 09, 2025 am 07:09 AM

Erstellen Sie eine Datenbank mit Navicat Premium: Stellen Sie eine Verbindung zum Datenbankserver her und geben Sie die Verbindungsparameter ein. Klicken Sie mit der rechten Maustaste auf den Server und wählen Sie Datenbank erstellen. Geben Sie den Namen der neuen Datenbank und den angegebenen Zeichensatz und die angegebene Kollektion ein. Stellen Sie eine Verbindung zur neuen Datenbank her und erstellen Sie die Tabelle im Objektbrowser. Klicken Sie mit der rechten Maustaste auf die Tabelle und wählen Sie Daten einfügen, um die Daten einzufügen.

MySQL und SQL: Wesentliche Fähigkeiten für Entwickler MySQL und SQL: Wesentliche Fähigkeiten für Entwickler Apr 10, 2025 am 09:30 AM

MySQL und SQL sind wesentliche Fähigkeiten für Entwickler. 1.MYSQL ist ein Open -Source -Relational Database Management -System, und SQL ist die Standardsprache, die zum Verwalten und Betrieb von Datenbanken verwendet wird. 2.MYSQL unterstützt mehrere Speichermotoren durch effiziente Datenspeicher- und Abruffunktionen, und SQL vervollständigt komplexe Datenoperationen durch einfache Aussagen. 3. Beispiele für die Nutzung sind grundlegende Abfragen und fortgeschrittene Abfragen wie Filterung und Sortierung nach Zustand. 4. Häufige Fehler umfassen Syntaxfehler und Leistungsprobleme, die durch Überprüfung von SQL -Anweisungen und Verwendung von Erklärungsbefehlen optimiert werden können. 5. Leistungsoptimierungstechniken umfassen die Verwendung von Indizes, die Vermeidung vollständiger Tabellenscanning, Optimierung von Join -Operationen und Verbesserung der Code -Lesbarkeit.

So erstellen Sie eine neue Verbindung zu MySQL in Navicat So erstellen Sie eine neue Verbindung zu MySQL in Navicat Apr 09, 2025 am 07:21 AM

Sie können eine neue MySQL -Verbindung in Navicat erstellen, indem Sie den Schritten folgen: Öffnen Sie die Anwendung und wählen Sie eine neue Verbindung (Strg N). Wählen Sie "MySQL" als Verbindungstyp. Geben Sie die Hostname/IP -Adresse, den Port, den Benutzernamen und das Passwort ein. (Optional) Konfigurieren Sie erweiterte Optionen. Speichern Sie die Verbindung und geben Sie den Verbindungsnamen ein.

So führen Sie SQL in Navicat aus So führen Sie SQL in Navicat aus Apr 08, 2025 pm 11:42 PM

Schritte zur Durchführung von SQL in Navicat: Verbindung zur Datenbank herstellen. Erstellen Sie ein SQL -Editorfenster. Schreiben Sie SQL -Abfragen oder Skripte. Klicken Sie auf die Schaltfläche Ausführen, um eine Abfrage oder ein Skript auszuführen. Zeigen Sie die Ergebnisse an (wenn die Abfrage ausgeführt wird).

Navicat stellt eine Verbindung zu Datenbankfehlercode und Lösung her Navicat stellt eine Verbindung zu Datenbankfehlercode und Lösung her Apr 08, 2025 pm 11:06 PM

Häufige Fehler und Lösungen beim Anschließen mit Datenbanken: Benutzername oder Kennwort (Fehler 1045) Firewall -Blocks -Verbindungsverbindung (Fehler 2003) Timeout (Fehler 10060) Die Verwendung von Socket -Verbindung kann nicht verwendet werden (Fehler 1042).

See all articles