AzLearn

أساسيات الفهارس

Index Basics

مفهوم ~18 دقيقة

أساسيات الفهارس — Index Basics

الفهرس يشبه قائمة مرتبة تساعد قاعدة البيانات على العثور على الصفوف بسرعة. إذا كنت تبحث كثيراً بـWHERE email = ?, فقد يساعد فهرس على email. لكن الفهرس ليس مجانياً. كل INSERT أو UPDATE قد يحتاج تحديث الفهارس أيضاً، والفهارس تستهلك مساحة.

لا تضف فهارس عشوائياً. ابدأ من استعلام حقيقي بطيء، افهم شرطه وترتيبه، ثم أضف فهرساً مناسباً وقِس الفرق. الأداء يُقاس ولا يُتخيل.

مثال عملي

query.sql

الفهرس مناسب لأن البحث يعتمد على email.

PRIMARY KEY والفهرس التلقائي

PRIMARY KEY ينشئ فهرساً تلقائياً في SQLite. إضافة CREATE INDEX idx_users_id ON users(id) بعد تعريف id كـ PK هدر: الفهرس موجود أصلاً. لا تضف فهرساً على العمود الرئيسي.

الفهرس المُغطي — Covering Index

فهرس يشمل كل الأعمدة التي يحتاجها الاستعلام يُسمى covering index؛ قاعدة البيانات تُجيب الاستعلام من الفهرس مباشرة دون العودة للجدول الأصلي.

query.sql

ترتيب أعمدة الفهرس المركب

INDEX(a, b) يفيد:

  • WHERE a = ? — نعم
  • WHERE a = ? AND b = ? — نعم
  • WHERE b = ? وحده — لا، لأن الفهرس مرتب بـa أولاً

ضع العمود ذو الانتقائية الأعلى (أقل قيم متكررة) في اليسار.

تحدي — Challenge