Teil 1: MySQL4 - Optimierung von Anfragen

SQL-Optimierung: Indizes richtig einsetzen

Weitere Operationen

In diesem Fall durchsuchen wir zwar Tabelle t1 immer noch vollständig, aber wir können für t2 und t3 indizierte Suchvorgänge ausführen, sodass die Zeilen aus diesen Tabellen direkt angesprochen werden. Die Anfrage läuft etwa eine Million mal schneller – kein Witz! (Dieses Beispiel ist natürlich trivial. Es soll nur der Veranschaulichung dienen; die dabei aufgezeigten Probleme sind jedoch echt. Wenn Sie eine Tabelle mit Indizes versehen, können Sie die Leistungsfähigkeit wirklich drastisch verbessern.)

MySQL verwendet die Indizes in der beschriebenen Weise, um das Suchen nach Zeilen zu beschleunigen, die mit dem Inhalt einer WHERE-Klausel übereinstimmen oder die bei Joins mit Zeilen in anderen Tabellen übereinstimmen. Außerdem werden Indizes verwendet, um die Performance anderer Operationen zu verbessern:

  • Der kleinste oder größte Wert einer indizierten Spalte wird schnell mithilfe der Funktionen MIN() oder MAX() gefunden, ohne jede Zeile auswerten zu müssen.

  • MySQL kann die Indizes häufig nutzen, um Sortieroperationen für ORDER BY- und GROUP BY-Klauseln schneller auszuführen.

  • Manchmal braucht MySQL die Datendatei überhaupt nicht zu lesen. Angenommen, Sie wählen Werte aus einer indizierten numerischen Spalte einer MyISAM-Tabelle, aber keine anderen Spalten dieser Tabelle aus. In diesem Fall haben Sie mit dem Lesen eines Indexwerts bereits den Wert, den Sie auch erhalten würden, wenn Sie die Datendatei lesen würden. Es gibt keinen Grund, Werte zweimal zu lesen, deshalb muss die Datendatei für diese Operation nicht herangezogen werden.