Welcher Datentyp eignet sich besser? (MySQL)
Eddie
- datenbank
Hallo allerseits,
ich stehe staendig vor der Entscheidung, was als Datentyp besser passen koennte.
Z.B. wenn ich eine Bezeichnung fuer einen Artikel festlege, also einen Titel. Der kann z.B. lang sein ("Original Badeente aus Loriots Badewannensketch...") oder kurz ("Ente").
Dann kommt doch folgendes in Frage:
CHAR(xyz) scheidet wohl aus, wenn ich das recht verstehe wird das Feld dort mit Leerzeichen aufgefuellt - keine Ahnung, wo man das gebrauchen koennte...
Danke für eure Hilfe,
Eddie
yo,
solange es sich nicht um einen primary key handelt würde ich in deinem falle varchar nehmen.
Ilja
Moin Eddie,
CHAR(xyz) scheidet wohl aus, wenn ich das recht verstehe wird das Feld dort mit Leerzeichen aufgefuellt - keine Ahnung, wo man das gebrauchen koennte...
wenn du weist das ein Feld niemlas größer als zB. 9 Zeichen ist ( Kundennummer) dann spart char(9) durchaus Platz in der DB und dann ist auch diese Definition sinnvoll.
Grüsse
Mike
Hallo,
wenn du weist das ein Feld niemlas größer als zB. 9 Zeichen ist ( Kundennummer) dann spart char(9) durchaus Platz in der DB und dann ist auch diese Definition sinnvoll.
Gut, aber mal angenommen ich habe die Kundennummer von 0 an inkrementiert, also 0 - 100.000.000, dann muss ich jedesmal die Leerzeichen raustrimmen. Auch bloed. Da nehm ich doch gleich varchar(9), oder?
Hat die Wahl des Datentyps nicht auch Auswirkungen auf die Zugriffsgeschwindigkeit? Wenn ich ein Feld mit variable Laenge nehme (also varchar), dann haben meine Datensaetze keine konstante Laenge mehr, es muesste also aufwendiger sein, auf den x-ten Datensatz zuzugreifen. Mit char(...) wie von dir vorgeschlagen waer das dann wohl nicht so, dafuer hab ich die Leerzeichen.
Ehrlich, ich bin mir nicht sicher, ob ich das peile. Genausogut kann ich doch gleich TINYTEXT nehmen, da ist gleich alles auf Laenge 255? Also was ist der Unterschied zwischen den Text-Typen und den String-Typen???
Eddie
Hello,
CHAR(xyz) scheidet wohl aus, wenn ich das recht verstehe wird das Feld dort mit Leerzeichen aufgefuellt - keine Ahnung, wo man das gebrauchen koennte...
wenn du weist das ein Feld niemlas größer als zB. 9 Zeichen ist ( Kundennummer) dann spart char(9) durchaus Platz in der DB und dann ist auch diese Definition sinnvoll.
Das gilt nur solange, bis im Datensatz das erste varchar() oder *text()-Feld auftaucht. Von dem Moment an werden alle Chjaracter-Felder als variable Chars gespeichert und MySQL arbeitet sowohl mit variabler Satzlänge als auch mit chaotisch gestreutem Datenformat (chaotisch im Gegensatz zu direkt). Dabei können blob()-Felder auch wieder auf eigenen Seiten stehen, während alle char() und num-Felder möglichst auf einer Seite zusammengehalten werden. MySQL arbeitet dann auch mit variablber Seitengröße. Das ist dafür sinnvoll, dass noch Record-Locking möglich ist. Es wird dann nämlich immer die Seitengruppe gesperrt (Stammseite des Satzes und die anhängenden Blob-Seiten)
Alles habe ich leider noch nicht herausbekommen. Wenn jemand über die Mechanismen vom MyISAM-Format was findet oder liegen hat, dann freu ich mich über Rückmeldung.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom