it-swarm.com.de

Was ist der Unterschied zwischen VARCHAR und CHAR?

Was ist der Unterschied zwischen VARCHAR und CHAR in MySQL?

Ich versuche, MD5-Hashes zu speichern.

308
steven

VARCHAR hat eine variable Länge.

CHAR hat eine feste Länge.

Wenn Ihr Inhalt eine feste Größe hat, erzielen Sie mit CHAR eine bessere Leistung.

Auf der MySQL-Seite unter CHAR und VARCHAR Types finden Sie eine ausführliche Erklärung (lesen Sie auch die Kommentare).

307
Anon.

VERKOHLEN

  1. Zum Speichern von Zeichenkettenwerten mit fester Länge .
  2. Die maximale Nr. der Zeichen kann der Datentyp enthalten - 255 Zeichen .
  3. Es ist 50% schneller als VARCHAR.
  4. Verwendet statische Speicherzuordnung .

VARCHAR

  1. Zum Speichern von variabler Länge alphanumerischen Daten.
  2. Das Maximum dieses Datentyps kann bis .__ betragen.
    • Vor MySQL 5.0.3: 255 Zeichen .
    • Post-MySQL 5.0.3: 65.535 Zeichen für die Zeile freigegeben.
  3. Es ist langsamer als CHAR.
  4. Verwendet dynamische Speicherzuordnung * .
195
Rahul Bhadana

CHAR Vs VARCHAR

CHAR wird für Variable mit fester Länge verwendet
VARCHAR wird für variable Längengrößenvariable verwendet.

Z.B.

Create table temp
(City CHAR(10),
Street VARCHAR(10));

Insert into temp
values('Pune','Oxford');

select length(city), length(street) from temp;

Ausgabe wird sein

length(City)          Length(street)
10                    6

Schlussfolgerung: Um Speicherplatz effizient zu nutzen, muss VARCHAR verwendet werden. Stattdessen CHAR, wenn variable Länge variabel ist

109
P Sharma

Eine CHAR(x)-Spalte kann nur genau x-Zeichen enthalten.
Eine VARCHAR(x)-Spalte kann bis x-Zeichen enthalten.

Da Ihre MD5-Hashes immer dieselbe Größe haben, sollten Sie wahrscheinlich eine CHAR verwenden.

Sie sollten MD5 jedoch nicht an erster Stelle verwenden. es hat Schwächen bekannt.
Verwenden Sie stattdessen SHA2.
Wenn Sie Kennwörter hashen, sollten Sie bcrypt verwenden.

59
SLaks

Varchar schneidet nachfolgende Leerzeichen ab, wenn die eingegebenen Zeichen kürzer als die angegebene Länge sind, während char dies nicht tut. Char füllt Leerzeichen auf und ist immer die Länge der angegebenen Länge. Im Hinblick auf die Effizienz ist varchar geschickter, da es Zeichen abschneidet, um mehr Anpassungen zu ermöglichen. Wenn Sie jedoch die genaue Länge von char kennen, wird char mit etwas mehr Geschwindigkeit ausgeführt. 

Weitere Informationen hierzu finden Sie unter:

http://www.allthingsdiscussed.com/More/Differenz-zwischen-char-und-varchar-in-mysql

8
user1445657

Was ist der Unterschied zwischen VARCHAR und CHAR in MySQL?

Zu den bereits gegebenen Antworten möchte ich hinzufügen, dass in OLTP -Systemen oder in Systemen mit häufigen Aktualisierungen die Verwendung von CHAR auch für Spalten mit variabler Größe in Betracht gezogen wird, da während der Aktualisierungen möglicherweise VARCHAR-Spalten fragmentiert werden.

Ich versuche, MD5-Hashes zu speichern.

MD5-Hash ist nicht die beste Wahl, wenn Sicherheit wirklich wichtig ist. Wenn Sie jedoch eine Hash-Funktion verwenden, sollten Sie stattdessen BINARY type in Betracht ziehen (z. B. erzeugt MD5 einen 16-Byte-Hash, sodass BINARY(16) anstelle von CHAR(32) aus 32 Zeichen besteht, die hexadezimale Ziffern darstellen. Dies würde mehr Platz sparen und die Leistung verbessern .

8

In den meisten RDBMSs sind sie heute Synonyme. Bei Systemen, die noch unterschieden werden, wird ein CHAR-Feld jedoch als Spalte mit fester Breite gespeichert. Wenn Sie es als CHAR (10) definieren, werden 10 Zeichen in die Tabelle geschrieben. Dort wird "Leerzeichen" (normalerweise Leerzeichen) verwendet, um Leerzeichen aufzufüllen, die die Daten nicht belegen. Zum Beispiel würde das Speichern von "Bob" als ("Bob" +7 Leerzeichen) gespeichert werden. Eine VARCHAR-Spalte (variables Zeichen) dient zum Speichern von Daten, ohne den zusätzlichen Platz einer CHAR-Spalte zu verschwenden.

Wie immer spricht Wikipedia lauter.

5
mobiGeek

CHAR ist ein Feld mit fester Länge. VARCHAR ist ein Feld mit variabler Länge. Wenn Sie Zeichenfolgen mit einer stark variablen Länge wie Namen speichern, verwenden Sie eine VARCHAR. Wenn die Länge immer gleich ist, verwenden Sie ein CHAR, da es etwas größer und weniger schnell ist.

4
Andrew

CHAR hat eine feste Länge und VARCHAR ist eine variable Länge. CHAR verwendet immer die gleiche Menge an Speicherplatz pro Eintrag, während VARCHAR nur die Menge verwendet, die zum Speichern des eigentlichen Textes erforderlich ist.

2
Donnie DeBoer

Das Zeichen ist ein Datentyp mit fester Länge, der Varchar ist ein Datentyp mit variabler Länge.

Da char ein Datentyp mit fester Länge ist, entspricht die Speichergröße des char-Werts der maximalen Größe für diese Spalte. Da varchar ein Datentyp mit variabler Länge ist, entspricht die Speichergröße des varchar-Werts der tatsächlichen Länge der eingegebenen Daten und nicht der maximalen Größe für diese Spalte.

Sie können char verwenden, wenn erwartet wird, dass die Dateneinträge in einer Spalte die gleiche Größe haben. _ Sie können varchar verwenden, wenn erwartet wird, dass die Dateneinträge in einer Spalte beträchtlich variieren.

2
Bob Minteer

nach High Performance MySQL Buch: 

VARCHAR speichert Zeichenketten variabler Länge und ist der gebräuchlichste Zeichenfolgendatentyp. Es kann weniger Speicherplatz als .__ erforderlich sein. Typen mit fester Länge, da nur so viel Speicherplatz benötigt wird, wie er benötigt (d. h., weniger Speicherplatz wird zum Speichern kürzerer Werte verwendet). Die Ausnahme ist ein MyISAM-Tabelle, die mit ROW_FORMAT = FIXED erstellt wurde, wobei ein fester Betrag verwendet wird Platz für jede Zeile auf der Festplatte und kann somit Platz verschwenden. VARCHAR hilftLeistung, weil es Speicherplatz spart. 

CHAR hat eine feste Länge: MySQL reserviert immer genügend Speicherplatz für die angegebene Anzahl von Zeichen. Beim Speichern eines CHAR-Werts wird MySQL Entfernt alle nachfolgenden Leerzeichen. (Dies gilt auch für VARCHAR in MySQL 4.1 und älteren Versionen - CHAR und VAR CHAR waren logisch identisch und unterschieden sich nur im Speicherformat.) Werte werden mit Leerzeichen als .__ aufgefüllt. für Vergleiche benötigt.