Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

char vs vchar

86 views
Skip to first unread message

Martin Thoma

unread,
Aug 27, 2002, 9:56:36 AM8/27/02
to
Hallo!

In der Docu steht, der Unterschied zwischen den Spaltentypen "char" und
"vchar" sei, dass char immer eine feste Länge hat, während vchar sich
der Länge des Inhaltes anpaßt. Nun erscheint ja vchar ideal, da es in
der Regel Speicherplatz spart (es sei denn, man nutzt die Länge voll
aus, dann kommt zusätztlich noch die Längenangabe hinzu).

Meine Frage ist, ob es evtl. einen Unterschied in der Schnelligkeit der
Abfragen gibt oder wo sonst char seine "Daseinsberechtigung" hätte.
Vermutlich kann ich mit char doch schneller zu einem Datensatz springen
(Länge * Datensatznummer) als bei vchar, wo ich mich "durchwurschteln"
muß. Merkt man davon etwas in der Realität?

Grüße

Martin


Ansgar Becker

unread,
Aug 27, 2002, 10:09:34 AM8/27/02
to
> Meine Frage ist, ob es evtl. einen Unterschied in der Schnelligkeit der
> Abfragen gibt oder wo sonst char seine "Daseinsberechtigung" hätte.
> Vermutlich kann ich mit char doch schneller zu einem Datensatz springen
> (Länge * Datensatznummer) als bei vchar, wo ich mich "durchwurschteln"
> muß. Merkt man davon etwas in der Realität?


Merkt man normalerweise nix von. Char ist eben "ein paar Nanosekunden"
schneller und Varchar spart Plattenplatz, was u.U. sehr erheblich sein kann,
wenn man sehr viele Datensätze hat, die zwar alle kaum gefüllt sind, aber
wegen der char-Platz-Reservierung drastisch mehr Platz verbraucht, als es
eigentlich nötig wäre. Andersrum: sind es nur mittelmäßig viele Datensätze
und sind die Felder größtenteils bis zum Anschlag gefüllt, würde ich eher zu
Char tendieren.

Ansgar


Klaus Becker

unread,
Aug 30, 2002, 1:33:48 AM8/30/02
to
Man kann unter Umständen sehr wohl etwas davon merken. Nämlich dann,
wenn alle Felder in einer Tabelle eine feste Breite (static format)
haben. Also wenn man z.B. nur Felder vom Typ INTEGER und CHAR benutzt.
Dann kann MySQL Tabellenscans und Scans der Indizes sehr viel schneller
durchführen. Zudem ist ein festes Tabellenformat auch sicherer was die
Wiederherstellung von gecrashten Tabellen angeht. Nachteil ist natürlich
der größere Plattenplatz der bei CHAR gegenüber VARCHAR benötigt wird.

Ist halt immer eine Sache der Abwägung: Evtl. steigt der benötigte
Plattenplatz derart an, dass man der Performancegewinn gleich wieder
futsch ist. Evtl. steigt die Größe der Tabellendateien aber nur
unwesentlich an so dass man durchaus einen Performancegewinn hat.

Siehe auch:
http://www.mysql.com/doc/en/Static_format.html
http://www.mysql.com/doc/en/Storage_requirements.html

Klaus

Andreas Kempf

unread,
Aug 30, 2002, 5:37:18 AM8/30/02
to
On Tue, 27 Aug 2002 15:56:36 +0200, Martin Thoma <mar...@radiok2r.de>
wrote:

>Meine Frage ist, ob es evtl. einen Unterschied in der Schnelligkeit der
>Abfragen gibt oder wo sonst char seine "Daseinsberechtigung" hätte.

<cite>
I decided to find out how CHAR, VARCHAR, and TEXT compare in
performance. On my P-II Linux box, I created three tables, one with a
CHAR(50) field, one with a VARCHAR(50), and one with a TEXT field.
Using Perl + DBI, I inserted 100,000 records into each table. All
three insert loops took around 30 seconds. I then wrote a loop to
SELECT a row from each table 100 times. CHAR took 20 seconds, VARCHAR
took 36 seconds, and TEXT took 30 seconds. This occurred for both '='
and 'LIKE' in the WHERE clause. Conclusion: TEXT queries are 50%
slower than CHAR, and VARCHAR queries are even slower. However, this
translates into only fractions of a second per query, unless you have
millions of records.
</cite>
Quelle: <r...@workhost.com>

Beste Gruesse, Andreas
--
[amalesh] * andreas kempf * müggenkampstr 7a * 20257 hamburg
http://www.amalesh.de * in...@amalesh.de * tel: 040-401744412

0 new messages