Oracle: Optimierung von SQL Befehlen durch entfallende Sortierungen

Die folgenden Oracle Befehle lösen (je nach Umfang aufwändigere) Sortierungen aus:

  • ORDER BY
  • GROUP BY
  • SELECT DISTINCT
  • CREATE INDEX
  • ANALYZE
  • UNION
  • INTERSECT
  • MINUS
  • JOIN Nur Joins von Tabellen mit nicht indexierten Spalten
Bei großen Datenmengen können diese Befehle / Optionen so aufwändig werden, dass Sie mehrere Sekunden bis Minuten nur wegen der Sortierung warten. Kombinieren oder kapseln Sie diese Befehle noch, vervielfacht sich der Rechenaufwand für den Datenbankserver und die performance sinkt dementsprechent stark. Um die Performance zu verbessern, können Sie folgende Maßnahmen umsetzen:
  • Sortiervorgänge vermeiden Das Vermeiden der Sortiervorgänge ist die erste (und beste !) Maßnahme. Die folgenden Punkte geben einige Hinweise, wie Sie Sortiervorgänge vermeiden können:
    • Benutzen Sie UNION ALL anstelle von UNION (nicht immer möglich)
    • Indizieren Sie alle Tabellen (Felder), die Sie in einer Join-Operation verwenden
    • Spalten, die Sie in ORDER BY und GROUP BY Funktionen verwenden, sollten mit einem Index versehen werden
    • Benutzen Sie den COMPUTE Befehl für die Analyse von Tabellen und Indizes
  • Vergrößerung der Sort Area Seit Oracle9i ist der Initialisierungsparameter "PGA_AGGREGATE_TARGET" verfügbar. Dieser legt fest, wie viel Hauptspeicher in der PGA für alle Serverprozesse der Instanz zur Verfügung gestellt wird. Oracle versucht dabei, dass die Größe des Private Memorys nicht über diese Größe hinaus anwachsen zu lassen. Um diesen Parameter festzulegen bestimmen Sie bitte, wieviel Hauptspeicher der Oracleinstanz zur Verfügung steht. Subtrahieren Sie davon die Größe der SGA. Den Rest können Sie im Parameter PGA_AGGREGATE_TARGET festlegen. Hinweis: Seien Sie bei der Definition der Sort Area Größe vorsichtig ! Beachten Sie, dass eine Sort Area pro Benutzer angelegt wird. Bei 1000 Benutzern und einer Sort Area Größe von einem MB wird ca. ein GB Hauptspeicher belegt - wenn alle Benutzer gleichzeitig sortieren sollten.
Beachten Sie auch unseren Artikel zur Messerung der Sortierperformance.