الترتيب والتجميع
الفرز عملية مستهلكة للموارد بشدة؛ فهو يحتاج قدراً كبيراً من وقت المعالج، لكن المشكلة الأساسية أن قاعدة البيانات يجب أن تخزّن النتائج مؤقتاً. وعلى أي حال، يجب أن تقرأ عملية الفرز المدخلات كاملة قبل أن تنتج الخرج الأول. ولا يمكن تنفيذ عمليات الفرز على نحو متدفق، وقد يصبح ذلك مشكلة مع مجموعات البيانات الكبيرة.
يوفّر الفهرس تمثيلاً مرتَّباً للبيانات المفهرسة: وقد شُرح هذا المبدأ في الفصل 1. ويمكننا القول أيضاً إن الفهرس يخزّن البيانات مرتَّبة مسبقاً؛ فهو في الحقيقة مرتَّب كما لو استُخدم تعريف الفهرس في جملة order by. فلا عجب إذن أن نستطيع استخدام الفهارس لتجنّب عملية الفرز من أجل تلبية جملة order by.
ومن المفارقات أن INDEX RANGE SCAN يصبح أيضاً غير فعّال مع مجموعات البيانات الكبيرة — خصوصاً عندما يعقبه وصول إلى الجدول. وقد يلغي ذلك التوفير الناتج عن تجنّب عملية الفرز، وقد يكون FULL TABLE SCAN مع عملية فرز صريحة أسرع في هذه الحالة. ومرة أخرى، مهمة المُحسِّن تقييم خطط التنفيذ المختلفة واختيار أفضلها.
إن أعجبك هذا الموضوع، قد يعجبك أيضاً…
… أن تشترك في القوائم البريدية، وتحصل على ملصقات مجانية، وتشتري كتابي، أو تنضم إلى دورة تدريبية.
غير أن تنفيذ order by المفهرس لا يوفّر جهد الفرز فحسب، بل يستطيع أيضاً إرجاع النتائج الأولى دون معالجة بيانات المدخلات كلها. ويُنفَّذ order by إذن على نحو متدفق. ويشرح الفصل 7النتائج الجزئية كيفية استغلال التنفيذ المتدفق لتنفيذ استعلامات ترقيم فعّالة. وهذا ما يجعل order by المتدفق مهماً إلى حد أنني أسميه القوة الثالثة للفهرسة.
ملاحظة
اجتياز شجرة B هو القوة الأولى للفهرسة.
العنقدة هي القوة الثانية للفهرسة.
order by المتدفق هو القوة الثالثة للفهرسة.
يشرح هذا الفصل كيفية استخدام فهرس لتنفيذ order by متدفق. ولهذا الغرض يجب أن نولي اهتماماً خاصاً للتفاعلات مع جملة where وكذلك لمُعدِّلَي ASC وDESC. ويُختتم الفصل بتطبيق هذه التقنيات على جمل group by أيضاً.
المحتويات
- فهرسة Order By — التفاعلات مع جملة
where ASC/DESCوNULL FIRST/LAST— تغيير ترتيب الفهرس- فهرسة Group By — تدفّق
group by