LIMIT begrenzt, wie viele Zeilen eine SQL-Abfrage liefert. Typische Einsätze: die ersten Treffer einer Rangliste, Stichproben oder Seitennavigation in Webanwendungen.

Grundform (MySQL, MariaDB, PostgreSQL, SQLite)

SELECT name, punkte FROM spieler
ORDER BY punkte DESC
LIMIT 10;

Die ersten zehn Zeilen kommen zurück. LIMIT steht ganz am Ende der Abfrage – nach WHERE und ORDER BY. Ohne ORDER BY ist nicht definiert, welche zehn Zeilen es sind.

Mit Offset: die nächste Seite

SELECT name, punkte FROM spieler
ORDER BY punkte DESC
LIMIT 10 OFFSET 20;

OFFSET 20 überspringt die ersten 20 Zeilen – das ist Seite 3 bei 10 Zeilen pro Seite. MySQL/MariaDB erlauben auch die Kurzform LIMIT 20, 10 (zuerst Offset, dann Anzahl).

Standard-SQL: FETCH FIRST

Der ANSI-Standard kennt OFFSET … FETCH FIRST n ROWS ONLY – die Form beherrschen PostgreSQL, SQL Server und Oracle. SQL Server nutzt klassisch SELECT TOP (10), Oracle vor 12c ROWNUM <= 10. MySQL/MariaDB und SQLite bleiben bei LIMIT.

Große Offsets werden langsam

Bei LIMIT 100000 OFFSET 1000000 muss die Datenbank erst eine Million Zeilen durchgehen und verwerfen. Bei tiefen Seiten hilft „Keyset-Pagination“: Man merkt sich den letzten Wert der Sortierspalte und filtert mit WHERE:

SELECT name, punkte FROM spieler
WHERE punkte < 500
ORDER BY punkte DESC
LIMIT 10;

Abgrenzung

  • LIMIT begrenzt die Anzahl der Zeilen – die Reihenfolge bestimmt ORDER BY.
  • Welche Zeilen überhaupt infrage kommen, entscheidet WHERE.
  • In INSERT- und UPDATE-Kontexten begrenzt LIMIT auch Schreiboperationen (etwa DELETE … LIMIT 100 in MySQL/MariaDB).