Kapitel 7: MySQL-Sprachreferenz 467
Wenn Sie einen UNIQUE INDEX oder PRIMARY KEY zu einer Tabelle hinzuf¨ugen,
wird dieser vor jedem Nicht-UNIQUE-Index gespeichert, so dass MySQL doppelte
Schl¨usseleintr¨age so fr¨uh wie m¨oglich feststellen kann.
• ORDER BY gestattet Ihnen, eine Tabelle mit Zeilen in einer bestimmten Reihenfolge zu
erzeugen. Beachten Sie, dass die Tabelle nach INSERTs und DELETEs nicht in dieser
Reihenfolge verbleibt. In einigen F¨allen kann es das Sortieren f¨ur MySQL erleichtern,
wenn die Tabelle nach der Spalte geordnet ist, nach der Sie sie sp¨ater ordnen wollen.
Diese Option ist haupts¨achlich n¨utzlich, wenn Sie wissen, dass Sie die Zeilen meis-
tens in einer bestimmten Reihenfolge abfragen werden. Wenn Sie diese Option nach
großen
¨
Anderungen in der Tabelle benutzen, k¨onnen Sie m¨oglicherweise eine h¨ohere
Performance erzielen.
• Wenn Sie ALTER TABLE auf einer MyISAM-Tabelle benutzen, werden alle nicht eindeuti-
gen Indexe in einem separaten Stapellauf erzeugt (wie bei REPAIR). Das sollte ALTER
TABLE viel schneller machen, wenn Sie viele Indexe haben.
• Ab MySQL 4.0 kann dies explizit aktiviert werden. ALTER TABLE ... DISABLE KEYS ve-
ranlasst MySQL, mit der Aktualisierung nicht eindeutiger Indexe f¨ur MyISAM-Tabellen
aufzuh¨oren. ALTER TABLE ... ENABLE KEYS sollte dann benutzt werden, um fehlende
Indexe wieder zu erzeugen. Weil MySQL das mit Algorithmen durchf¨uhrt, die viel
schneller sind als das Einf¨ugen von Schl¨usseln nacheinander, kann das Abschalten von
Schl¨usseln bei Masseneinf¨ugeoperationen erheblich Geschwindigkeitsvorteile bringen.
• Mit der C-API-Funktion mysql_info() k¨onnen Sie herausfinden, wie viele Datens¨atze
kopiert wurden und (wenn IGNORE benutzt wird) wie viele Datens¨atze aufgrund der
Duplizierung eindeutiger Schl¨usselwerte gel¨oscht wurden.
• Die FOREIGN KEY-, CHECK- und REFERENCES-Klauseln machen nichts. Die Syntax f¨ur sie
steht nur aus Kompatibilit¨atsgr¨unden bereit, um das Portieren von Code von anderen
SQL-Servern zu erleichtern und um Applikationen laufen zu lassen, die Tabellen mit
Referenzen erzeugen. Siehe Abschnitt 2.7.4.5 [ANSI diff Foreign Keys], Seite 43.
Hier ist ein Beispiel, das einige der Anwendungsf¨alle von ALTER TABLE zeigt. Wir fangen
mit einer Tabelle t1 an, die wie folgt erzeugt wird:
mysql> CREATE TABLE t1 (a INTEGER,b CHAR(10));
Um die Tabelle von t1 nach t2 umzubenennen, geben Sie ein:
mysql> ALTER TABLE t1 RENAME t2;
Um Spalte a von INTEGER nach TINYINT NOT NULL zu ¨andern (der Name bleibt derselbe)
und Spalte b von CHAR(10) nach CHAR(20) zu ¨andern und gleichzeitig von b nach c umzube-
nennen, geben Sie ein:
mysql> ALTER TABLE t2 MODIFY a TINYINT NOT NULL, CHANGE b c CHAR(20);
Jetzt wird eine TIMESTAMP-Spalte namens d hinzugef¨ugt:
mysql> ALTER TABLE t2 ADD d TIMESTAMP;
Nunmehr erzeugen wir einen Index auf Spalte d und machen Spalte a zum Prim¨arschl¨ussel:
mysql> ALTER TABLE t2 ADD INDEX (d), ADD PRIMARY KEY (a);
Wir entfernen Spalte c:
mysql> ALTER TABLE t2 DROP COLUMN c;
Und f¨ugen eine neue AUTO_INCREMENT-Ganzzahl-Spalte namens c hinzu:
Comentarios a estos manuales