von Markus Winand.

Funktionen


Der Index auf LAST_NAME hat die Abfrage zwar erheblich beschleunigt, setzt aber voraus, dass die Groß- und Kleinschreibung bei der Suche übereinstimmt. Dieser Abschnitt zeigt, wie man diese Einschränkung durch Funktions-basierende Indizierung aufheben kann, ohne dabei Per­for­mance einzubüßen.

Db2 (LUW)

Db2 auf zOS unterstützt funktions-basierte Indizierung seit einiger Zeit, aber erst seit Version 10.5 auf LUW. Benutzer-definierte Funktionen können in Indizes nicht verwendet werden.

Als Alternative kann man der Tabelle eine neue Spalte hinzufügen, die das Ergebnis des Funktionsausdruckes enthält. Diese Spalte muss man bei Änderungen unbedingt aktuell halten. Zum Beispiel mit einem Datenbank-Trigger. Die neue Spalte kann man dann ganz normal indizieren. In der where-Klausel verwendet man dann einfach die neue Spalte (ohne der Funktion).

MySQL

MySQL Suchen ignorieren die Groß- und Kleinschreibung per Default. Das kann man allerdings auf Spaltenebene abstellen. Ab Version 5.7 kann MySQL generierte Spalten indizieren.

Als Alternative kann man bei älteren Versionen der Tabelle eine neue Spalte hinzufügen, die das Ergebnis des Funktionsausdruckes enthält. Diese Spalte muss man bei Änderungen unbedingt aktuell halten. Zum Beispiel mit einem Datenbank-Trigger. Die neue Spalte kann man dann ganz normal indizieren. In der where-Klausel verwendet man dann einfach die neue Spalte (ohne der Funktion).

Oracle

Die Oracle Datenbank unterstützt funktions-basierende Indizes seit Release 8i. Virtuelle Spalten (virtual column) wurden mit Version 11g eingeführt.

PostgreSQL

PostgreSQL unterstützt Indizes auf Ausdrücken seit Version 7.2 teilweise und seit Version 7.4 vollständig (Indexes on Expressions).

SQL Server

SQL Server unterstützt Berechnete Spalten (Computed Columns), die Indizierbar sind, seit Release 2000.

Inhalt

  1. Groß- und Kleinschreibung ignorierenUPPER und LOWER

  2. Benutzerdefinierte Funktionen — Grenzen der Indizierbarkeit

  3. Über-Indizierung — Vermeide Redundanzen

Vorherige SeiteNächste Seite

Du kannst nicht alles an einem Tag lernen. Abonniere den Newsletter via E-Mail, Bluesky oder RSS um sukzessive aufzuholen. Und sieh dir auch modern-sql.com an.

Über den Autor

Foto von Markus Winand

Markus Winand gibt auf modern-sql.com Einblick in SQL und zeigt, wie es von verschiedenen Systemen unterstützt wird. Zuvor machte er use-the-index-luke.com, was er noch immer wartet. 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»

Neuigkeiten Abonnieren

Markus Winands MailinglistenMarkus Winands RSS-FeedMarkus Winand auf LinkedInMarkus Winand auf XINGMarkus Winand auf TwitterMarkus Winand auf Bluesky
Copyright 2010-2025 Markus Winand. Alle Rechte vorbehalten.
Impressum | Kontakt | KEINE GEWÄHR | Handelsmarken | Datenschutz und DSGVO