mmofacts.com

Ganz dumme Frage... (Mysql)

gepostet vor 18 Jahre, 11 Monate von Haatschiii
Kann mir wer den Unterschied sagen zwischen einer varchar und einer einfachen char? Wann sollte man was nutzen?

Und dann das zweite, was bringen Indexe ausser dass man ein auto_increment machne kann? Sprich ist es schneller wenn man ganz viele indexe hat oder wenn man nur einen für id oder so hat?

thx, Seby
gepostet vor 18 Jahre, 11 Monate von Kallisti
afaik braucht ein varchar nur den Speicher der auch belegt ist und nicht immer stumpf, direkt die ganze Menge.

Indizes beschleunigen die Datenbank um einiges, wenn man sie fuer haeufige Suchstrings verwendet. Aber wenn du zu viele und vor allem Text indzides hast, wird der overhead fuer das Index erstellen groesser als der performance gewinn.

Ein Beispiel:
Ich habe eine Tabelle "schiffe" mit den feldern "id", "besitzer" und 20 weiteren Datenfeldern.

Jedoch greifen 95% der Datenbankanfragen nur mit "WHERE id =..." oder "WHERE besiter = " auf die Tabelle zu.

Demnach bietet es sich natuerlich an einen Index auf diese beiden Spalten zu setzen, um das zu beschleunigen.
gepostet vor 18 Jahre, 11 Monate von Störti
Wenn du z.B. eine Spalte mit varchar(20) deklarierst und dann eine Zeichenkette mit 9 Zeichen speicherst, werden auch nur 9 Byte belegt.
Bei char(20) belegt der String trotzdem 20 Byte. Der Vorteil von varchar ist also der geringere Speicherplatz, Nachteil ist allerdings, dass MySQL nicht genau weiss, wie lang der einzelne Datensatz wirklich ist, da jeder da anders ist. Das fragmentiert nach einer Weile die Festplatte (bei großen DB's) und verlangsamt die Suche. Bei char ist djeder Datensatz gleich lang, das verbraucht zwar mehr Speicherplatz, beschleunigt aber die Suche nach Datensätzen...
gepostet vor 18 Jahre, 11 Monate von Kampfhoernchen
Kann man so stehen lassen. Ich mache es deshalb so, dass ich nach Möglichkeiten chars() einsetze. Denn Plattenplatz ist ja heute eigentlich kein Thema mehr.
gepostet vor 18 Jahre, 11 Monate von Klaus
Aber RAM speicher. Es sollte möglichsts soviel wie möglich im RAM liegen können und nicht jeder kann sich einen Server mit X GB RAM leisten.

Auf diese Diskussion antworten