ما معنى الفهرس المغطي Covering Index في SQL؟

متقدمقراءة دقيقةآخر تحديث 3 أكتوبر 2026

SQL قواعد البيانات

الإجابة

يكون الفهرس مغطيًا لاستعلام عندما يحتوي على الأعمدة اللازمة لتنفيذ ذلك الاستعلام وإنتاج نتيجته. التغطية إذن علاقة بين فهرس واستعلام محدد، وليست خاصية تجعل الفهرس يغطي كل عمليات الجدول. قد يغطي فهرس استعلامًا يعرض معرف العميل والمبلغ، لكنه لا يغطي استعلامًا آخر يطلب ملاحظات الطلب أيضًا.

تكمن الفائدة في إمكانية الحصول على البيانات المطلوبة من الفهرس دون الحاجة المعتادة إلى جلب الأعمدة من صف الجدول. مع ذلك، لا تعني التغطية أن المحسن سيختار هذا المسار دائمًا، ولا تعني أن القراءة أصبحت بلا تكلفة. كما أن توسيع الفهرس لإضافة أعمدة كثيرة يزيد حجمه وتكلفة صيانته.

مثال

CREATE TABLE orders (
  id INT PRIMARY KEY,
  customer_id INT,
  total DECIMAL(10,2),
  notes VARCHAR(200),
  INDEX idx_customer_total (customer_id, total)
) ENGINE=InnoDB;
SELECT customer_id, total
FROM orders
WHERE customer_id = 7;

يحتاج الاستعلام إلى العمودين الموجودين صراحة في الفهرس. إضافة notes إلى قائمة العرض تغير هذه العلاقة، لأنها تطلب بيانات غير موجودة فيه. لذلك ندرس التغطية بناءً على الأعمدة المقروءة والشروط المستخدمة معًا.

باختصار: الفهرس المغطي يوفر الأعمدة المطلوبة لاستعلام بعينه، وقد يقلل الحاجة إلى قراءة صفوف الجدول.

هل تريد تعلّم SQL خطوة بخطوة مع تمارين عملية؟ تابع مسار SQL من الأساسيات للاحتراف.

اختبر فهمك

أي استعلام تغطي أعمدته الفهرس idx_customer_total دون الحاجة إلى عمود غير موجود فيه؟

CREATE TABLE orders (
  id INT PRIMARY KEY,
  customer_id INT,
  total DECIMAL(10,2),
  notes VARCHAR(200),
  INDEX idx_customer_total (customer_id, total)
) ENGINE=InnoDB;