TGViewer
CodeVerse | دنیای برنامه نویسان CodeVerse | دنیای برنامه نویسان @codeverse_dev · 1.06K subscribers
Post #548 371
🧠 چرا OFFSET برای Pagination در دیتابیس همیشه انتخاب خوبی نیست؟

در پروژه‌های کوچک این Query کاملاً طبیعی است:

SELECT * FROM posts ORDER BY id DESC LIMIT 20 OFFSET 100000

اما هرچه OFFSET بزرگ‌تر شود، دیتابیس ممکن است مجبور شود تعداد زیادی رکورد را بررسی و رد کند تا به بخش موردنظر برسد.
برای دیتاست‌های بزرگ، یکی از راه‌حل‌های بهتر:


Cursor-based Pagination
مثلاً به جای:
OFFSET 100000
می‌توان گفت:
WHERE id < last_seen_id
و سپس:
ORDER BY id DESC LIMIT 20

مزیت؟

⚡ مناسب برای Feedهای بزرگ
⚡ همچنین Performance پایدارتر
⚡ کاهش اسکن غیرضروری رکوردها

البته انتخاب بین Offset و Cursor به Use Case بستگی دارد؛ Cursor برای همه سناریوها جایگزین مستقیم Offset نیست.
قبل از انتخاب Pagination، به حجم داده و Query Plan فکر کنید.


@CodeVerse_dev
  • 👍 6
  • ❤ 2
More from @codeverse_dev
  1. Oct 7, 2026🔥git reflog؛ دکمه Undo واقعی Git فرض کن یه Branch رو اشتباهی حذف کردی. یا یه reset --hard…
  2. Oct 7, 2026👨‍💻 برنامه‌نویسی با AI راحت‌تر شده؛ پس چرا بعضی Developerها خسته‌تر شده‌اند؟ طبق نظرسنجی…
  3. Oct 7, 2026🚨 وردپرس 7.1.3 منتشر شد؛ این یکی را عقب نینداز وردپرس دیروز نسخه 7.1.3 را منتشر کرد؛ یک آ…
  4. Oct 6, 2026شرکت Google وارد یک درگیری جدی با ناشران شده ⚖️ رگولاتور رقابت لهستان اعلام کرده Google را…
  5. Oct 6, 2026اگر Windows 11 داری، قبل از نصب بعضی آپدیت‌ها حواست باشد ⚠️ مایکروسافت تأیید کرده آپدیت پی…
  6. Oct 6, 2026اگر Chrome استفاده می‌کنی، این آپدیت را جدی بگیر ⚡ نسخه Stable مرورگر Chrome برای دسکتاپ ب…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →