In Oracle-Datenbanken ist es oftmals erforderlich, die Anzahl der zurückgegebenen Zeilen einer Abfrage zu begrenzen. Das kann nützlich sein, um beispielsweise die Performance zu optimieren oder nur eine bestimmte Untermenge der Daten zu betrachten. Hierfür gibt es verschiedene Techniken.
1. Verwendung von ROWNUM:
Das Pseudofeld ROWNUM
wird von Oracle bereitgestellt, um die Reihenfolge der von einer Abfrage zurückgegebenen Zeilen zu nummerieren.
Syntax:
SELECT spalte1, spalte2, ...
FROM tabelle
WHERE ROWNUM <= n;
Hierbei ist n
die maximale Anzahl der zurückzugebenden Zeilen.
Beispiel:
SELECT name, alter
FROM personen
WHERE ROWNUM <= 10;
Dieses Beispiel gibt die ersten 10 Zeilen aus der Tabelle “personen” zurück.
2. Verwendung von FETCH FIRST:
Seit Oracle 12c bietet Oracle die Möglichkeit, die Anzahl der zurückgegebenen Zeilen mit FETCH FIRST
direkt zu begrenzen.
Syntax:
SELECT spalte1, spalte2, ...
FROM tabelle
FETCH FIRST n ROWS ONLY;
Beispiel:
SELECT name, alter
FROM personen
FETCH FIRST 10 ROWS ONLY;
Auch hier werden die ersten 10 Zeilen aus der Tabelle “personen” zurückgegeben.
Wichtige Hinweise:
- Die Verwendung von
ROWNUM
kann in Kombination mitORDER BY
zu unerwarteten Ergebnissen führen. In solchen Fällen ist es oft sinnvoll, eine Unterabfrage zu verwenden. - Mit
FETCH FIRST
ist es auch möglich, einen Prozentsatz der Zeilen zurückzugeben, indem manFETCH FIRST n PERCENT ROWS ONLY
verwendet.
Abschließend lässt sich festhalten, dass es in Oracle mehrere Möglichkeiten gibt, die Anzahl der von einer Abfrage zurückgegebenen Zeilen zu begrenzen. Je nach Anwendungsfall und Oracle-Version können Entwickler die für sie am besten geeignete Methode auswählen. Es ist jedoch immer wichtig, die Abfrage vor der Produktionsimplementierung gründlich zu testen.