Bez pagination vrátíte miliony záznamů najednou. Offset je jednoduchý ale pomalý, cursor je rychlý ale složitější.
Offset pagination¶
– Jednoduché, ale pomalé na velkých tabulkách SELECT * FROM products ORDER BY id LIMIT 20 OFFSET 1000; – DB musí přeskočit 1000 řádků!
API¶
GET /api/products?page=51&limit=20
Cursor (keyset) pagination¶
– Rychlé i na milionech řádků SELECT * FROM products WHERE id > :last_id – Cursor = poslední ID ORDER BY id LIMIT 20;
API response¶
{ “data”: […], “meta”: { “next_cursor”: “eyJpZCI6MTAyMH0=”, “has_more”: true } }
Kdy který¶
- Offset: Admin panely, malé datasety, potřeba ‘go to page X’
- Cursor: Feed, infinite scroll, real-time data, velké datasety
Klíčový takeaway¶
Cursor pagination pro produkci (rychlé, stabilní). Offset jen pro admin/malé datasety.