344 MySQL - Technische Referenz f¨ur Version 5.0.1-alpha
• Benutzten Sie INSERT /*! LOW_PRIORITY */, wenn Sie wollen, dass Ihre Selects h¨ohere
Priorit¨at haben.
• Benutzen Sie SELECT /*! HIGH_PRIORITY */, um zu bewirken, dass Selects in der
Wartereihe nach vorn springen. Das heißt, der Select wird sogar dann durchgef¨uhrt,
wenn jemand darauf wartet, etwas zu schreiben.
• Benutzen Sie das mehrzeilige INSERT-Statement, um viele Zeilen mit einem SQL-Befehl
zu speichern (viele SQL-Server unterst¨utzen das).
• Benutzen Sie LOAD DATA INFILE, um gr¨oßere Datenmengen zu laden. Das ist schneller
als normale Einf¨ugevorg¨ange und wird noch schneller, wenn myisamchk in mysqld in-
tegriert wird.
• Benutzen Sie AUTO_INCREMENT-Spalten, um eindeutige Werte zu erzeugen.
• Benutzen Sie gelegentlich OPTIMIZE TABLE, um Fragmentierungen zu vermeiden, wenn
Sie das dynamische Tabellenformat verwenden. Siehe Abschnitt 5.5.1 [OPTIMIZE
TABLE], Seite 240.
• Benutzen Sie - wenn m¨oglich - HEAP-Tabellen, um mehr Geschwindigkeit zu erzielen.
Siehe Kapitel 8 [Table types], Seite 482.
• Bei einer normalen Webserver-Konfiguration sollten Bilder als separate Dateien gespe-
ichert werden. Das heißt, sp eichern Sie nur einen Verweis zur Datei in der Datenbank.
Der Hauptgrund ist, dass normale Webserver viel besser darin sind, Dateien zu cachen
als Datenbankinhalte. Daher ist es viel einfacher, ein schnelles System zu bekommen,
wenn Sie Dateien benutzen.
• Benutzen Sie f¨ur nicht kritische Daten, auf die oft zugegriffen wird, Tabellen im Ar-
beitsspeicher (zum Beispiel Informationen ¨uber die Banner, die Benutzern ohne Cookies
zuletzt pr¨asentiert wurden).
• Spalten mit identischen Informationen in unterschiedlichen Tabellen sollten identisch
deklariert sein und identische Namen haben. Vor Version 3.23 konnte man ansonsten
langsame Joins erhalten.
Versuchen Sie, die Namen einfach zu halten (benutzen Sie name anstelle von kunde_
name in der Kundentabelle). Um Namen f¨ur andere SQL-Server portabel zu halten,
sollten Sie sie k¨urzer als 18 Zeichen halten.
• Wenn Sie WIRKLICH hohe Geschwindigkeit brauchen, sollten Sie einen Blick auf die
Low-Level-Schnittstellen zur Datenspeicherung werfen, die die unterschiedlichen SQL-
Server unterst¨utzen! Wenn Sie zum Beispiel auf MyISAM direkt zugreifen, erhalten Sie
eine Geschwindigkeitssteigerung um den Faktor 2 bis 5, im Vergleich zur Benutzung
der SQL-Schnittstelle. Um das durchf¨uhren zu k¨onnen, m¨ussen die Daten auf demsel-
ben Server liegen wie die Applikation und ¨ublicherweise sollte auf sie nur von einem
Prozess zugegriffen werden (weil externes Dateisperren reichlich langsam ist). Man
k¨onnte die oben genannten Probleme beseitigen, indem Low-Level-MyISAM-Befehle in
den MySQL-Server eingebaut werden (das w¨are eine einfache M¨oglichkeit, bei Bedarf
mehr Performance zu erlangen). Indem die Datenbankshnittstelle sorgf¨altig entworfen
wird, sollte es recht einfach sein, diese Arten von Optimierung zu unterst¨utzen.
• In vielen F¨allen ist es schneller, auf Daten aus einer Datenbank (mit einer direkten
Verbindung) als ¨uber eine Textdatei zuzugreifen, schon deshalb, weil die Datenbank
wahrscheinlich kompakter ist als die Textdatei (wenn Sie numerische Daten benutzen)
Comentarios a estos manuales