hast du ein ORDER BY in der Query oder vertraust du auf die im Grunde beliebig mögliche Rückgabereihenfolge der DB?
in jeden Fall ist der mögliche Unterschied doch abstrakt betrachtet eindeutig:
beim WHERE reicht maximal ein Komplettdurchlauf, durch Indexe besser noch schneller, Auswahl weniger Einträge fürs Ergebnis
bei der startId muss speicherphysikalisch eine neue Liste von 600.000 Einträgen aufgebaut werden,
(mit ORDER BY gar sämtliche Einträge, um erst dann Sortierung zu ermöglichen),
und darauf als zweiten Schritt die Auswahl
dass startID=0 schneller ist als anderes, vielleicht sogar vergleichbar mit einer WHERE-Query, stellt die einfache Sicht etwas in Frage,
aber irgendeine Arbeit wird ja wohl zu tun sein,
vielleicht ist das Erstellen einer sortierten Liste, besonders erstmal nur den Anfang davon, mit Indexen und sonstigen Tricks doch überschaubar,
-> wenn nur diesen Anfang nötig, nicht bis 600.000 hoch zusammenzustellen, dann schnell fertig
was wäre die Alternative, ‘auf ein SQL Statement mapped’?
soll daraus ein bestimmter Id-Berech für ein WHERE berechnet werden? klingt abenteuerlich, nach welcher Vorgabe, weil die Id im ORDER BY steht?
was ist wenn unter den ersten 600.000 Ids 458 nicht vergeben sind, soll dann auch OFFSET=600000 auf Id = 600.458 umgerechnet werden?
eine Id ist wie jedes Attribut beliebige Daten reichlich unbekannten Inhalts,
die Einträge der Tabelle stehten unsortiert beliebig in der DB, es gibt kein Array mit konkreten Index-Positionen oder so,
intern vielleicht, aber nicht für SQL-Auswertung