فهارس قواعد البيانات، بمثال دليل الهاتف
كل استعلام بطيء أصلحته كان يؤول إلى نفس الصورة. تطلب من MySQL تنفيذ WHERE email = 'omar@example.com'، وبدون فهرس لا تملك قاعدة البيانات سوى خيار واحد:
ما هو الفهرس فعليًا
الفهرس بنية ثانية مرتّبة بجانب الجدول: شجرة B-tree. الأشياء المرتّبة يمكن البحث فيها بالتنصيف، فتتنقل قاعدة البيانات بقفزات لا بخطوات. نفس الاستعلام، مع فهرس على العمود email:
متى تضيف فهرسًا
- الأعمدة الموجودة في
WHERE، وJOIN ... ON، وORDER BY لاستعلاماتك الأكثر استخدامًا. - المفاتيح الأجنبية، دائمًا.
- ليس على الأعمدة التي نادرًا ما تُستخدم في الفلترة: كل فهرس يبطئ الكتابة قليلًا.
EXPLAIN على الاستعلام. إن رأيت type: ALL، فتلك هي الرسمة الأولى: فحص كامل. بعد إضافة الفهرس المناسب تصبح ref أو range، الرسمة الثانية.نسبة الـ 20% تحسّن في الأداء التي حقّقتها في Getmayes كانت في معظمها هذا: قراءة مخرجات EXPLAIN، رسم الشجرة، وإضافة الفهارس الأربعة التي كانت الاستعلامات تطلبها بصمت.
ملاحظات القراء