Dass Datenbanken so kurze Antwortzeiten besitzen, ist ausgefeilten Performance-Maßnahmen zu verdanken. Einige ganz wichtige Optimierungen wollen wir in diesem Kapitel vorstellen. Wir sehen uns zunächst den in allen größeren Datenbanken implementierten Optimizer an, der alle Zugriffsbefehle überprüft und optimiert, noch bevor sie ausgeführt werden. Mit Hilfe eines vom Optimizer generierten Ausführungsplans können wir nachvollziehen, wie ein Befehl letztendlich ausgeführt wird. Damit ausgerüstet, können wir gleich mit Indexen testen, wie viel diese sehr wichtigen Strukturen leisten. Bei sehr großen Relationen bietet die Partitionierung ebenfalls enorme Antwortzeitgewinne. In eine ganz andere Richtung gehen wir mit materialisierten Sichten. Performancemäßig nützen Sichten nur, wenn wir diese auch physisch speichern. Und genau dies tun materialisierten Sichten. Weiter geben wir Hinweise, wie wir unsere Select-Befehle optimieren können. Neben weiteren Optimierungen spielen Stored Procedures eine wichtige Rolle. Wir werden auch darauf eingehen.