انتقل إلى محتوى الدرس

Fast Keyset Seek Pagination Pattern تقسيم الصفحات السريع بالمؤشر

تعلّم تحسين أداء الاستعلامات وأفضل ممارسات الفهرسة في MySQL بأسلوب MySQL 8 الحديث مع أمثلة استعلامات SQL وتطبيقات تفاعلية.
1 صفوف تعليمية
MySQL
7 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

عند تقسيم النتائج إلى صفحات (Pagination)، يعمل الأسلوب التقليدي LIMIT 20 OFFSET 0 بسرعة في الصفحة الأولى، لكن عندما ينتقل المستخدم إلى صفحة بعيدة مثل LIMIT 20 OFFSET 100000، فإن محرك MySQL يضطر لقراءة وفرز 100,020 صفاً كاملةً ثم يرمي أول 100,000 صف في سلة المهملات ليرجع لك 20 صفاً فقط!

الحل الهندسي المعتمد في المنصات الكبرى هو التصفح بالمؤشر أو المفتاح (Keyset / Seek Pagination):

  • بدلاً من تمرير رقم الإزاحة OFFSET، نحتفظ بآخر قيمة مفتاح أساسي ظهرت في الصفحة الحالية (مثلاً last_order_id = 400000).
  • نطلب الصفحة التالية بالشرط WHERE order_id < 400000 ORDER BY order_id DESC LIMIT 20.
  • يقفز المحرك عبر شجرة الفهرس العنقودي مباشرةً إلى المعرّف 400000 ويقرأ 20 صفاً فقط في أقل من ملي ثانية بغض النظر عن عمق الصفحة!
SQL
SELECT order_id, customer_id, total_amount FROM orders WHERE order_id < 400000 ORDER BY order_id DESC LIMIT 20;