Jonas
06.04.2002, 21:12
So, hab mich jetzt mal durch die Optimierungs-Kapitel der MySQL-Doku für die Tabellenstruktur durchgearbeitet.
Also wenn ich das richtig verstanden hab, sollte folgendes beachtet werden:
- Alles auf NOT NULL setzen. Wozu brauchts das NULL eigentlich überhaupt? Als default-Wert dann praktisch ´´ angeben?
- Eine Spalte mit INT, und auto_increment, und INDEX, und als PRIMARY KEY definieren, damit ich z.B. anhand von dem Feld löschen oder editieren kann
- Alle Spalten, die in der WHERE-Bedingung einbezogen werden können/sollen, sollten ein INDEX sein.
Hab ich das so richtig verstanden?
Also als Beispiel:
CREATE TABLE test (
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
masterid VARCHAR(10) NOT NULL DEFAULT ´´,
name VARCHAR(100) NOT NULL DEFAULT ´´,
vorname VARCHAR(100) NOT NULL DEFAULT ´´,
dsl INT(1) NOT NULL DEFAULT ´´,
PRIMARY KEY (id),
KEY id(id),
KEY masterid(masterid)
);
Also id soll dazu da sein, um z.B. beim editieren oder löschen genau die Zeile zu wissen, masterid, danach soll z.B. ausgelesen werden, also Usergruppe oder sowas ;)
name, vorname sollen die halt eingetragen werden. ich habe bei der doku gesehen, daß die für name z.B. auch CHAR(100) nehmen, wieso? Was passiert, wenn der Name kürzer is?
Und bei dsl soll halt 1 oder 0 rein, je nachdem ob sie dsl haben oder net (oder halt irgendwas anderes, is ja egal ;))
Also is das so richtig, oder lässt sich da noch was verbessern?
MfG
Also wenn ich das richtig verstanden hab, sollte folgendes beachtet werden:
- Alles auf NOT NULL setzen. Wozu brauchts das NULL eigentlich überhaupt? Als default-Wert dann praktisch ´´ angeben?
- Eine Spalte mit INT, und auto_increment, und INDEX, und als PRIMARY KEY definieren, damit ich z.B. anhand von dem Feld löschen oder editieren kann
- Alle Spalten, die in der WHERE-Bedingung einbezogen werden können/sollen, sollten ein INDEX sein.
Hab ich das so richtig verstanden?
Also als Beispiel:
CREATE TABLE test (
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
masterid VARCHAR(10) NOT NULL DEFAULT ´´,
name VARCHAR(100) NOT NULL DEFAULT ´´,
vorname VARCHAR(100) NOT NULL DEFAULT ´´,
dsl INT(1) NOT NULL DEFAULT ´´,
PRIMARY KEY (id),
KEY id(id),
KEY masterid(masterid)
);
Also id soll dazu da sein, um z.B. beim editieren oder löschen genau die Zeile zu wissen, masterid, danach soll z.B. ausgelesen werden, also Usergruppe oder sowas ;)
name, vorname sollen die halt eingetragen werden. ich habe bei der doku gesehen, daß die für name z.B. auch CHAR(100) nehmen, wieso? Was passiert, wenn der Name kürzer is?
Und bei dsl soll halt 1 oder 0 rein, je nachdem ob sie dsl haben oder net (oder halt irgendwas anderes, is ja egal ;))
Also is das so richtig, oder lässt sich da noch was verbessern?
MfG