تخطَّ إلى المحتوى

🗄️ شرح SQL وقواعد البيانات

فهرسة SQL — الأساسيات (B-Tree)

الدرس 26 من 29· ⏱ 1 دقائق قراءة

لماذا الفهارس؟

الفهرس (Index) يمنح قاعدة البيانات خريطة سريعة للوصول إلى الصفوف المطلوبة دون مسح الجدول كاملًا (Full Table Scan).

بدون فهرس، تفحص القاعدة كل صف — مع فهرس، تنتقل مباشرة إلى الموقع.

هيكل B-Tree

الأكثر شيوعًا هو B-Tree (Balanced Tree):

  • البيانات مرتبة ترتيبًا تصاعديًا.
  • البحث يستغرق O(log n).
  • فعّال للبحث بالقيم المحددة والمدى (BETWEEN, >, <).

متى يفيد الفهرس؟

-- سريع جدًا مع الفهرس
SELECT * FROM users WHERE email = 'a@b.com';

-- فعّال مع نطاق
SELECT * FROM orders WHERE created_at > '2025-01-01';

-- يساعد في الترتيب
SELECT * FROM products ORDER BY price DESC;

متى لا يفيد؟

  • أعمدة بتفرّد منخفض (جنس، حالة) — عدد قليل من القيم المكرّرة.
  • جداول صغيرة جدًا (مسح كامل أسرع).
  • دوال على العمود: WHERE YEAR(date) = 2025 (يلغي الفهرس).

الفهرس المركّب (Composite Index)

فهرس على أكثر من عمود:

CREATE INDEX idx_orders_user_date ON orders(user_id, created_at);

قاعدة اليد اليسرى (Leftmost Prefix): يُستخدم لأي استعلام يبدأ بـ user_id، ثم user_id + created_at، لكن ليس created_at فقط.

⚠️ رتّب الأعمدة من الأكثر تفرّدًا إلى الأقل تفرّدًا.

الفهرس الفريد

CREATE UNIQUE INDEX idx_users_email ON users(email);

يضمن عدم تكرار القيم ويسرّع البحث — أداة مزدوجة.

🎯 التالي: استراتيجيات فهرسة متقدمة.

شرح فهرسة SQL — الأساسيات (B-Tree) — SQL وقواعد البيانات بالعربي
فهرسة SQL — الأساسيات (B-Tree)SQL وقواعد البيانات بالعربي · The Code Fix

📚 لمزيد من التعمّق في SQL وقواعد البيانات، راجِع توثيق SQL في PostgreSQL.

هل كان هذا الدرس مفيدًا؟