Så här hanterar jag det här. För den första sidan jag hämtar använder jag
SELECT id, col, col, col
FROM output
ORDER BY id DESC
LIMIT 10000
Sedan, i mitt klientprogram (node.js) fångar jag in id
värdet från den sista raden i resultatuppsättningen. När jag behöver nästa sida gör jag detta.
SELECT id, col, col, col
FROM output
WHERE id < my_captured_id_value
ORDER BY id DESC
Detta utnyttjar indexet. Och det fungerar korrekt även om du har tagit bort några rader från tabellen.
Förresten, du vill förmodligen ha ett fallande index om din första sidnumreringssida har de största ID:n. CREATE UNIQUE INDEX index_id ON output USING btree (ID DESC)
.
Proffstips SELECT *
är skadligt för prestanda på stora databaser. Lista alltid de kolumner du faktiskt behöver.