von Markus Winand.

Über-Indizierung


Wenn man sich das erste Mal mit Funktions-basierten Indizes beschäftigt, ist die Versuchung groß, alles Mögliche zu indizieren. Dabei kann es aber leicht passieren, dass man redundante Indizes anlegt.

Hinweis in eigener Sache

Ich lebe von SQL-Schulungen, SQL-Tuning und Beratung sowie dem Verkauf meines Buches „SQL Performance Explained“. Mehr auf winand.at.

Um die Groß- und Kleinschreibung zu ignorieren, könnte man statt der oben benutzten UPPER-Funktion auch die LOWER-Funktion verwenden:

SELECT first_name, last_name, phone_number
  FROM employees
 WHERE LOWER(last_name) = LOWER('winand')

Ein einzelner Index reicht dann nicht aus, beide Abfrage-Varianten abzudecken. Natürlich könnte man einen zweiten Index auf LOWER(last_name) anlegen. Das bedeutet aber, dass die Datenbank bei jeder insert-, update- oder delete-Anweisung beide Indizes aktualisieren muss (siehe Kapitel 8, „Schreiboperationen). Damit ein Index genügt, ist es also besser, immer dieselbe Funktion zu verwenden.

Tipp

Vereinheitliche die Zugriffswege, damit ein Index von mehreren Abfragen genutzt werden kann.

Warnung

UPPER und LOWER werden von ORM-Tools manchmal ohne Wissen der Entwickler verwendet. Hibernate verwendet zum Beispiel die LOWER-Funktion, um Case-insensitive Suchen umzusetzen.

Tipp

Versuche immer die Original-Daten zu indizieren. Das ist meist die nützlichste Information, die man in den Index aufnehmen kann.

Über den Autor

Foto von Markus Winand

Markus Winand ist der SQL Renaissance Botschafter auf der Mission, Entwickler auf die Evolution von SQL im 21. Jahrhundert aufmerksam zu machen. Markus kann als Trainer, Sprecher und Berater auf winand.at engagiert werden.

Sein Buch kaufen

Titelbild von „SQL Performance Explained“: Eichhörnchen läuft durchs Grass

Die Essenz: SQL-Tuning auf 200 Seiten

Jetzt Kaufen
(Taschenbuch und/oder PDF)

Sein Training

Markus verwandelt veraltetes SQL-92-Wissen in solides und zeitgemäßes SQL-Know-how

Erfahren Sie mehr»

Nicht mit OFFSET blättern

Mehr info

Besuche meine Schwester-Seite!Seit SQL-92 hat sich einiges getan!

Die Use The Index, Luke! Tasse

Aufkleber, Bierdeckel, Bücher und Kaffeetassen. Alles was man beim Lernen braucht!

Zum Shop

Mit Markus Winand verbinden

Markus Winand auf LinkedInMarkus Winand auf XINGMarkus Winand auf Twitter
„Use The Index, Luke!“ von Markus Winand ist unter einer Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License lizenziert.
Impressum | Kontakt | KEINE GEWÄHR | Handelsmarken | Datenschutz und DSGVO | CC-BY-NC-ND 3.0 Lizenz