أساسيات الفهارس
Index Basics
أساسيات الفهارس — Index Basics
الفهرس يشبه قائمة مرتبة تساعد قاعدة البيانات على العثور على الصفوف بسرعة. إذا كنت تبحث كثيراً بـWHERE email = ?, فقد يساعد فهرس على email. لكن الفهرس ليس مجانياً. كل INSERT أو UPDATE قد يحتاج تحديث الفهارس أيضاً، والفهارس تستهلك مساحة.
لا تضف فهارس عشوائياً. ابدأ من استعلام حقيقي بطيء، افهم شرطه وترتيبه، ثم أضف فهرساً مناسباً وقِس الفرق. الأداء يُقاس ولا يُتخيل.
مثال عملي
الفهرس مناسب لأن البحث يعتمد على email.
PRIMARY KEY والفهرس التلقائي
PRIMARY KEY ينشئ فهرساً تلقائياً في SQLite. إضافة CREATE INDEX idx_users_id ON users(id) بعد تعريف id كـ PK هدر: الفهرس موجود أصلاً. لا تضف فهرساً على العمود الرئيسي.
الفهرس المُغطي — Covering Index
فهرس يشمل كل الأعمدة التي يحتاجها الاستعلام يُسمى covering index؛ قاعدة البيانات تُجيب الاستعلام من الفهرس مباشرة دون العودة للجدول الأصلي.
ترتيب أعمدة الفهرس المركب
INDEX(a, b) يفيد:
WHERE a = ?— نعمWHERE a = ? AND b = ?— نعمWHERE b = ?وحده — لا، لأن الفهرس مرتب بـaأولاً
ضع العمود ذو الانتقائية الأعلى (أقل قيم متكررة) في اليسار.