SELECT … BETWEEN

Wenn fest steht, dass nur bestimmte Werte in einem Feld vorkommen, dann kann die Selektion durch Eingrenzung beschleunigt werden.

Eingrenzung zur Verkleinerung des Suchbereichs

Bei Tabellen, die die Belegnummer als Schlüsselfeld haben, kann es durchaus sinnvoll sein, die Belegnummern einzuschränken.

Gegebenenfalls muss das Belegnummern-Intervall zu ermittelt werden. In den meisten Fällen ist das Intervall zwar bekannt, aber auch ein Überlauf des Nummernkreises in acht oder zehn Jahren sollte berücksichtigt werden!

Sie müssen sich bei dieser Methode wirklich sicher sein, dass das verwendete Nummernkreisintervall auch Bestand hat!

Beispiel:

SELECT * FROM VBUK
 WHERE VBELN BETWEEN ‚0030000000‘ AND ‚0039999999‘
   AND …

Eingrenzung zur Einschränkung von Festwerten

Auch wenn ein Datenbankfeld nur beispielsweise vier Ausprägungen haben (Status: A, B, C, D), kann die Abfrage schneller sein, wenn Sie Werte eingrenzen:

Besser so:
SELECT * FROM NAST
 WHERE objky IN s_objky
   AND vstat BETWEEN ‚1‘ AND ‚4‘
   AND erdat = sy-datum.

Als so:
SELECT * FROM NAST
 WHERE objky IN s_objky
   AND erdat = sy-datum.

Es gilt: Je mehr Vorgaben die Datenbank hat, um die Werte selektieren zu können, desto schneller können die relevanten Sätze gefunden werden.

Diese Einschränkung macht natürlich nur dann Sinn, wenn Sie genau wissen, welche Ausprägungen ein Feld haben kann und wenn Sie schon alles andere zur Performancesteigerung versucht haben.

Enno Wulff
follow me