Tach!
ich gehe davon aus, dass es eine Liste aller IDs gibt, in der sie alle auffindbar sind. Dabei spielt es überhaupt keine Rolle, ob die IDs eine fortlaufende Nummerierung oder lustige Namen-Strings sind. Allein ihre Position in der Liste ist das Kriterium, um eine Paginierung davon abzuleiten.
Datensätze anhand der Position in der Ergebnismenge zu beschränken, ist bereits mit LIMIT problemarm möglich. Ohne LIMIT müsste man händisch die komplette vorhergehende Ergebnismenge durchzählen, um die Fortsetzung zu ermitteln. Das ist ein unverhältnismäßiger Aufwand, weil man das mit einer Stored Procedure serverseitig oder mit einer komplett zum Client übertragenenen Datenmenge machen müsste. LIMIT ist normalerweise das Mittel der Wahl zum seitenweisen Abfragen. Natürlich mit den Nachteilen, wenn Datensätze hinzugefügt oder entfernt werden, während man blättert.
Um übrigens die Gesamtanzahl der unLIMITierten Menge zu bekommen, kann man FOUND_ROWS() zusammen mit SQL_CALC_FOUND_ROWS verwenden. Das braucht man, um die Seitennummernanzeige für die Page-Links berechnen zu können.
dedlfix.