SQL Academy · درس

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

اختر ترتيب الأعمدة في الفهارس المركبة، وافهم قاعدة البادئة اليسرى، وصمّم فهارس تغطي عدة استعلامات

الدرس 2 من 413 خطوة

الفهارس المركبة وترتيب الأعمدة درس مجاني في SQL Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في SQL Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة SQL Academy 4 دروس في المجموع.

ما الفهرس المركب؟

هو فهرس يشمل أكثر من عمود. يمكن لفهارس PostgreSQL من نوع B-tree فهرسة ما يصل إلى 32 عمودًا، لكن المعتاد عمليًا هو فهرسة عمودين إلى أربعة أعمدة.

CREATE INDEX orders_user_created_idx ON orders(user_id, created_at DESC);

لماذا نستخدم الفهرس المركب؟

هناك حالتان:

  • يصفّي الاستعلام عدة أعمدة في الوقت نفسه
  • يصفّي الاستعلام عمودًا ويرتّب النتائج حسب عمود آخر

قاعدة البادئة اليسرى

يمكن لفهرس على (a, b, c) خدمة الحالات التالية:

  • WHERE a = ?
  • WHERE a = ? AND b = ?
  • WHERE a = ? AND b = ? AND c = ?

لكنه لا يخدم WHERE b = ? وحده، ولا WHERE c = ?.

الترتيب مهم

ضع العمود الأكثر انتقائية والأكثر استخدامًا في التصفية أولًا. ضع أعمدة المساواة قبل أعمدة النطاقات:

CREATE INDEX orders_user_total_idx ON orders(user_id, total);

-- Best for:  WHERE user_id = 42 AND total > 100
-- Also OK:  WHERE user_id = 42
-- Useless:  WHERE total > 100   (without user_id)

المساواة مقابل النطاق

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

-- Index: (status, created_at)
WHERE status = 'paid' AND created_at >= ...   -- both columns used
WHERE created_at >= ... AND status = 'paid'  -- index used for status, range scan on created_at

ترتيب الفهرس = ترتيب الفرز

يخدم فهرس على (user_id, created_at DESC) استعلام "طلبات المستخدم، من الأحدث إلى الأقدم" من دون خطوة فرز:

EXPLAIN ANALYZE
SELECT * FROM orders
WHERE user_id = 42
ORDER BY created_at DESC LIMIT 10;
-- Index Scan, no Sort node needed

تضمين أعمدة غير مفتاحية (INCLUDE)

يدعم PG 11+ الخيار INCLUDE لإنشاء فهارس "تغطية" — إذ تُخزَّن الأعمدة الإضافية في الأوراق، لكنها لا تُستخدم للترتيب:

CREATE INDEX orders_user_idx ON orders(user_id)
  INCLUDE (total, status);

-- Enables Index-Only Scan for queries that need just these columns.

متى لا تنشئ فهارس مركبة

إذا كان يجري الاستعلام عن الأعمدة بشكل مستقل، فيمكن لفهرسين منفردين لكل عمود خدمة عدد أكبر من الاستعلامات. تستبدل الفهارس المركبة المرونة بميزة "كل ما يحتاج إليه استعلام واحد".

دمج الفهارس النقطية

يمكن لـ PostgreSQL دمج عدة فهارس ذات عمود واحد باستخدام Bitmap Index Scan:

EXPLAIN ANALYZE
SELECT * FROM orders WHERE user_id = 42 AND status = 'paid';
-- BitmapAnd of two index scans — works without a composite, but slower than the right composite.

راقب تضخم الفهرس

الفهارس المركبة أكبر حجمًا. والفهارس الأكبر حجمًا = ملفات أكبر = جزء أقل من الفهرس يتسع في ذاكرة التخزين المؤقت. استخدمها بوعي.

اختيار ترتيب الأعمدة — مثال عملي

الاستعلام: "الطلبات لمستخدم واحد ضمن نطاق زمني، مرتبة حسب التاريخ".

-- Index design:
CREATE INDEX orders_user_created_idx
  ON orders(user_id, created_at DESC);

-- Query (efficiently uses the index):
SELECT * FROM orders
WHERE user_id = 42
  AND created_at >= NOW() - INTERVAL '30 days'
ORDER BY created_at DESC LIMIT 10;

مراجعة

تخدم الفهارس المركبة عوامل التصفية متعددة الأعمدة وتتجنب خطوات الفرز.

  • قاعدة البادئة اليسرى
  • أعمدة المساواة أولًا
  • استخدم INCLUDE للأعمدة المطلوبة للتغطية فقط
  • فهرسان منفردان أم فهرس مركب — يعتمد ذلك على مزيج الاستعلامات

تحقق سريع

لديك فهرس على (user_id, status, created_at). أي استعلام لا يمكنه استخدامه بكفاءة؟

البدء مجانًا

تعلم SQL مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
46
الدروس
183

الأسئلة الشائعة

هل درس «الفهارس المركبة وترتيب الأعمدة» مجاني؟

نعم — نص درس «الفهارس المركبة وترتيب الأعمدة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة SQL Academy، انتقل إلى CoddyKit PRO. تتضمن دورة SQL Academy 4 دروس في المجموع.

ماذا ستتعلم في «الفهارس المركبة وترتيب الأعمدة»؟

اختر ترتيب الأعمدة في الفهارس المركبة، وافهم قاعدة البادئة اليسرى، وصمّم فهارس تغطي عدة استعلامات تتمرن على SQL Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ SQL Academy؟

لا تُشترط خبرة سابقة. SQL Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «الفهارس المركبة وترتيب الأعمدة»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس SQL Academy هذا؟

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

جميع الدروس في هذه الدورة

  1. فهارس B-tree مقابل Hash مقابل GiST مقابل GIN
  2. الفهارس المركبة وترتيب الأعمدة
  3. الفهارس الجزئية وفهارس التعابير
  4. صيانة الفهارس وتضخمها
← العودة إلى SQL Academy