SELECT und ORDER BY

Dies ist Teil 6 von 10 der Serie Performance-Workshop

Tücken der ORDER-BY-Klausel. Wann Sie darauf verzichten sollten und wann sie unabdingbar ist.

Die ORDER-BY-Klausel wird verwendet, um eine sortierte Liste von der Datenbank zu erhalten.

Dies ist aber häufig nicht sinnvoll!

Deutlich schneller geht es, wenn die Daten mittels SELECT INTO TABLE mit einem Mal in eine interne Tabelle gelesen werden und dann diese interne Tabelle mittels SORT sortiert wird.

Der Grund für die bessere Perfromance liegt in der SAP-Pufferung: Zwischen Datenbank und ABAP-Programm gibt es noch eine SAP-eigene Datenpufferung, die in der Regel sehr effizient arbeitet.

Bei der Verwendung von ORDER BY wird diese Pufferung umgangen.

Wenn Sie den größten Eintrag eines Feldes aus einer Tabelle benötigen, dann sollten Sie anstelle des folgenden Codings lieber eine Aggregatfunktion der Datenbank nutzen:

SELECT zaehl FROM dbtab INTO lv_groesster_zaehler
 WHERE feld1 = lv_feld1
  ORDER BY zaehl DESCENDING.
  EXIT.
ENDSELECT.

Verwendung der Aggregatfunktion “MAX”:

SELECT max( zaehl ) FROM dbtab INTO lv_groesster_zaehler
 WHERE feld1 = lv_feld1.

Hierbei wird zwar ebenfalls die SAP-Pufferung umgangen, die Datenbank hat jedoch in der Regel eigene schnelle Routinen für die Ergebnisselektion.

Enno Wulff
Series Navigation<< Datenbank-HintsSub-Queries >>