Offset haqida
SQL databaselar bilan ishlaganda pagination uchun iloji boricha offset ishlatmaslikka harakat qiling. Sababi, limit va offset query processingda eng oxirgi bajariladigan operatsiyalar. Demak siz offset qilsangiz ham, qilmasangiz ham database baribir og'ir operatsiyalarni bajaradi. Ya'ni birinchi 100 mingta natijani olish bilan 99 minginchi natijadan boshlab mingta natijani olish tezlik jihatdan bir-biridan unchalik farq qilmaydi.
Xo'sh, unda qanday pagination qilish kerak? Iloji boricha index qilsa bo'ladigan biror narsa orqali. Nega? Sababi ularni index orqali filter qilish mumkin. Masalan, har bir pageda 1 kunlik postlar. Shunda offset qilmasdan date bo'yicha filter qilib kunlik postlarni olish mumkin.
Lekin buning bir yomon tomoni pagedagi resultlar soni aniq bo'lmaydi. Masalan, bugun 2 ta, kecha 100 ta post chiqqan bo'lsa bu usul UIda juda xunuk ko'rinadi.
Agar har bir pageda aynan ma'lum sondagi result kerak bo'lsa unda filter + limit ishlatish mumkin. Keyingi pagening boshlanish joyini olish uchun esa oldingi pagening oxirgi elementidan foydalaniladi. Masalan, page size 50 va hozirgi pagedagi oxirgi postning IDsi 150. Keyingi page uchun IDsi 150 dan katta bo'lgan birinchi 50 ta postni olish yetarli bo'ladi. Muhimi, bu usul offset talab qilmaydi.
Offsetdan qochishning bulardan tashqari ham bir nechta usullari bor. Qisqasi, offsetni doim oxirgi variant sifatida qoldiring.
Post #367
1.72K
- 👍 18