Heim  >  Artikel  >  Datenbank  >  Der Unterschied zwischen char und varchar in MySQL

Der Unterschied zwischen char und varchar in MySQL

黄舟
黄舟Original
2017-09-07 13:12:411686Durchsuche

Im MySQL-Tutorial besteht der Unterschied zwischen char und varchar darin, dass beide zum Speichern von Zeichenfolgen verwendet werden, ihre Speichermethoden jedoch unterschiedlich sind. char hat eine feste Länge, während varchar ein Zeichentyp mit variabler Länge ist.

Der Unterschied zwischen char und varchar

char (13) hat eine feste Länge, wie zum Beispiel „www.jb51.net“, was 12 Zeichen Speicherplatz erfordert

varchar (13) Variable Länge wie „www.jb51.net“ erfordert Speicherplatz von 13 Zeichen,

Wie aus dem Obigen ersichtlich ist, ist die Länge von char fest, egal wie viel Die von Ihnen gespeicherten Daten haben eine feste Länge. Varchar hat eine variable Länge, es muss jedoch 1 Zeichen zur Gesamtlänge hinzugefügt werden, das zum Speichern der Position verwendet wird. Daher können Benutzer dies in tatsächlichen Anwendungen entsprechend ihren eigenen Datentypen tun.

Sehen wir uns den Geschwindigkeitsunterschied zwischen Char und Varchar an.

Der Code lautet wie folgt:

mysal>create tabe ab(v varchar(4),c char(4)); 
query ok ,0 rows affected(0.02 sec) 
mysql>insert into abc values('ab ','ab ') 
query ok ,1 row affected(0.00 sec); 
mysql->select concat(v ,'+') ,concat(c ,'+') form abc 
ab + | ab+ 
1rows in set (0.00 sec)


Wie aus dem Obigen ersichtlich ist, hat char aus irgendeinem Grund eine feste Länge, sodass die Verarbeitungsgeschwindigkeit viel schneller ist als bei varchar, aber es kostet Speicherplatz, sodass der Speicher nicht groß ist, aber in Bezug auf die Geschwindigkeit Bei Bedarf können Sie den Typ char verwenden, andernfalls können Sie beispielsweise den Typ varchar verwenden.

Hinweis:

Wenn der Zeichentyp char verwendet wird und sich hinter dem Inhalt Leerzeichen befindet, muss eine entsprechende Verarbeitung durchgeführt werden, andernfalls wird das Leerzeichen automatisch gelöscht.

Empfehlung:

myisam-Speicher-Engine empfiehlt die Verwendung von Datenspalten fester Länge anstelle von Datenspalten variabler Länge.
Speicher-Engines verwenden derzeit einen festen Datenzeilenspeicher, daher spielt es keine Rolle, ob Sie Char-Varchar-Spalten verwenden.
Innodb-Speicher-Engine empfiehlt die Verwendung des Varchar-Typs.


Das Folgende ist Andere Internetnutzer-Ergänzung

char ist ein Typ mit fester Länge und varchar ist ein Typ mit variabler Länge
In einer Datenspalte vom Typ char(M) belegt jeder Wert M Bytes, wenn eine bestimmte Wenn die Länge kleiner als M ist, füllt MySQL sie rechts mit Leerzeichen auf. (Auffüllzeichen werden während des Suchvorgangs entfernt.) In einer Datenspalte vom Typ varchar(M) nimmt jeder Wert gerade genug Bytes plus ein Byte ein, um seine Länge aufzuzeichnen ( Das heißt, die Gesamtlänge beträgt L+1 Bytes ).

In MySQL verwendete Regeln, um zu bestimmen, ob eine Spaltentypkonvertierung erforderlich ist

1. Wenn in einer Datentabelle die Länge jeder Datenspalte festgelegt ist, dann ist die Die Länge jeder Datenzeile wird ebenfalls festgelegt.
2. Solange die Datenspalte in der Datentabelle eine variable Länge aufweist, ist die Länge jeder Datenzeile variabel.
 3. Wenn die Länge der Datenzeilen in einer Datentabelle variabel ist, konvertiert MySQL die Datenspalten fester Länge in der Datentabelle in den entsprechenden Typ variabler Länge.
Ausnahme: Char-Datenspalten mit einer Länge von weniger als 4 Zeichen werden nicht in den Typ Varchar konvertiert.

Versuchen Sie für MyISAM-Tabellen, Char zu verwenden. Für diejenigen Myisam- und Isam-Datentabellen, die häufig geändert werden müssen und sind leicht fragmentiert. Dies gilt umso mehr. Der Nachteil besteht darin, dass es Speicherplatz beansprucht. Es gibt keinen Unterschied zwischen Datenzeilen mit variabler Länge (alle Datenzeilen teilen sich einen Header-Teil, und dieser Header-Teil speichert Zeiger auf jede relevante Datenspalte), daher ist die Verwendung des Typs char nicht unbedingt besser als die Verwendung des Typs varchar . Da der Typ char normalerweise mehr Platz einnimmt als der Typ varchar, ist es im Hinblick auf die Reduzierung des Speicherplatzverbrauchs und der Reduzierung der Festplatten-E/A vorteilhafter, den Typ varchar zu verwenden. Artikel 2:
Character sollte am häufigsten vorkommen, aber es scheint, dass jede Datenbank anders ist. Beispielsweise gibt es in Oracle varchar2. MySQL scheint sich jedoch am meisten auf char und varchar zu konzentrieren.
Sagen Sie mir den Unterschied. Char hat eine feste Länge, während Varchar Speicherplatz entsprechend der spezifischen Länge verwendet. Beispielsweise verwendet char (255) und varchar (255) beim Speichern der Zeichenfolge „Hallo Welt“ einen Leerraum von 255 zum Speichern der 11 Zeichen, während varchar nicht 255 verwendet. Zuerst wird die Länge berechnet und dann nur Verwenden Sie 11 plus die berechnete Zeichenfolgenlängeninformation, normalerweise 1-2 Bytes, sodass Varchar den Speicherplatz beim Speichern unsicherer Längen erheblich reduziert.


Varchar scheint viel intelligenter zu sein als Char. Ist Char also nützlich? Es gibt noch viele Vorteile.


Speichern Sie zunächst sehr kurze Informationen, z. B. die Hausnummern 101, 201 ... Solche kurzen Informationen sollten char verwenden, da varchar auch ein Byte benötigt, um die Länge der Informationen zu speichern Ursprünglich zur Einsparung von Speicherplatz gedacht, ist es heute eine Geldverschwendung. Zwei, feste Länge. Wenn beispielsweise uuid als Primärschlüssel verwendet wird, sollte char besser geeignet sein. Da es eine feste Länge hat, verschwinden die dynamischen längenbasierten Eigenschaften von Varchar und es nimmt auch Längeninformationen auf.

3. Spalte, die sich sehr häufig ändert. Da jedes Mal, wenn Varchar gespeichert wird, zusätzliche Berechnungen erforderlich sind, um die Länge zu ermitteln, und andere Arbeiten erforderlich sind. Wenn sich diese sehr häufig ändert, wird viel Energie für Berechnungen aufgewendet, die für Char nicht benötigt werden.


Eine weitere Frage zu Varchar ist, dass die Speicherung von Varchar (8) und Varchar (255) gleich sein sollte, da sich Varchar automatisch an den Speicherplatz anpassen kann, sodass dies bei jedem Entwurf der Tabelle der Fall ist Es ist besser, bei Bedarf in eine größere Richtung zu gehen, um in Zukunft nicht den Ärger zu haben, nicht genug zu haben. Ist diese Idee richtig? Die Antwort ist nein. MySQL legt die Tabelleninformationen im Speicher ab (nach der ersten Abfrage werden sie zwischengespeichert, was unter Linux offensichtlich ist, unter Windows jedoch nicht der Fall zu sein scheint. Ich weiß derzeit nicht, warum). basiert auf einer festen Länge. Es wird Probleme geben, wenn varchar groß ist. Sie sollten also trotzdem bei Bedarf danach fragen.

Zusammenfassung: Schauen Sie sich die DZ-Datentabelle genau an. Felder mit fester Länge verwenden grundsätzlich immer noch Zeichen....

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!

Stellungnahme:
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