နားလည်ထားရမယ့် အချက်
SQL result အစီအစဉ်ကို `ORDER BY` မရေးလျှင် မအာမခံပါ။ Pagination အတွက် `LIMIT/OFFSET` က လွယ်ကူပေမယ့် offset ကြီးလာရင်နှေးပြီး concurrent insert များကြား duplicate/skip ဖြစ်နိုင်ပါတယ်။ Stable ordering key နှစ်ခုသုံးပြီး large feed များမှာ keyset pagination သို့ပြောင်းသင့်ပါတယ်။
လက်တွေ့ scenario နဲ့ ချိတ်ကြည့်မယ်
Published tutorial များကို date descending နဲ့ပြပြီး date တူရင် ID descending ဖြင့် deterministic ဖြစ်စေမယ်။ Search filter အတွက် input ကို string concatenation မလုပ်ဘဲ application မှ parameter ပေးရပါတယ်။ ဒီ lesson မှာ query semantics ကိုအရင်လေ့လာပြီး parameterization ကို project chapter မှာချိတ်မယ်။
အတူတူ စမ်းရေးကြည့်မယ်
-- First page
SELECT tutorial_id, title, published_at
FROM app.tutorials
WHERE is_published = true
ORDER BY published_at DESC, tutorial_id DESC
LIMIT 10;
-- Next keyset page: values come from the last visible row
SELECT tutorial_id, title, published_at
FROM app.tutorials
WHERE is_published = true
AND (published_at, tutorial_id) <
(TIMESTAMPTZ '2026-08-01 10:00:00+00', 42)
ORDER BY published_at DESC, tutorial_id DESC
LIMIT 10;Published tutorial များကို stable order ဖြင့် page ခွဲယူနိုင်မည်။၅ မိနစ် စမ်းကြည့်
Active user များကို created time နဲ့ ID အလိုက် keyset pagination query ရေးပါ။
သတိလေးတစ်ချက်
Sort column မတူညီနိုင်သော value ဖြစ်ပြီး unique tie-breaker မထည့်ရင် page အကြား row ပျောက်/ထပ်နိုင်ပါတယ်။
PostgreSQL — Queries — PostgreSQL Global Development Group