0Pricing
SQL Academy · درس

الفهارس للاستعلامات الشائعة

أضف فهارس للاستعلامات الأكثر استخدامًا: حسب المستخدم والتاريخ والمفتاح الخارجي، وقِس أثرها باستخدام EXPLAIN.

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

ما الفهرس؟

الفهرس هو بنية بيانات منفصلة على القرص، تتيح لقاعدة البيانات العثور على الصفوف حسب قيمة العمود دون فحص الجدول. وتُعد B-tree التطبيق الكلاسيكي لذلك.

تستبدل الفهارس الكتابة بالقراءة

يجعل كل فهرس عمليات INSERT أو UPDATE أو DELETE أبطأ قليلًا (إذ يجب تحديث الفهرس أيضًا). لا تضيفوا فهارس لا تحتاجون إليها.

تحصل المفاتيح الأساسية على فهرس تلقائي

يؤدي تعريف PRIMARY KEY تلقائيًا إلى إنشاء فهرس B-tree فريد. وينطبق الأمر نفسه على أعمدة UNIQUE.

فهرسوا أعمدة المفاتيح الخارجية

لا تنشئ PostgreSQL فهرسًا تلقائيًا على جانب الابن من FK. أضيفوا فهرسًا دائمًا — فمن دونه يؤدي حذف الأب إلى فحص جميع الأبناء:

CREATE INDEX comments_post_id_idx ON comments(post_id);
CREATE INDEX comments_author_id_idx ON comments(author_id);

فهرسوا الأعمدة المستخدمة في WHERE

إذا كنتم تصفّون كثيرًا باستخدام created_at، ففهرسوه:

CREATE INDEX posts_created_at_idx ON posts(created_at DESC);

-- Query benefits:
SELECT * FROM posts ORDER BY created_at DESC LIMIT 20;

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

بالنسبة إلى عوامل التصفية متعددة الأعمدة، يمكن أن يكون الفهرس المركب أسرع بكثير من فهرسين ذوي عمود واحد:

CREATE INDEX posts_author_published_idx
  ON posts(author_id, published_at DESC);

-- This query uses the index for both filter and sort:
SELECT * FROM posts
WHERE author_id = 42
ORDER BY published_at DESC LIMIT 10;

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

يمكن لفهرس مركب (a, b, c) خدمة WHERE a = ? وWHERE a = ? AND b = ? — لكن ليس WHERE b = ? وحده. فالترتيب مهم.

الفهارس الجزئية

فهرسوا الصفوف التي تستعلمون عنها فقط:

-- Only published posts:
CREATE INDEX posts_published_idx
  ON posts(published_at DESC)
  WHERE published_at IS NOT NULL;

-- Smaller index, faster lookups for the common case.

فهارس التعبيرات

فهرسوا ناتج دالة لعمود:

CREATE INDEX users_email_lower_idx ON users(LOWER(email));

-- Query that uses it:
SELECT * FROM users WHERE LOWER(email) = LOWER($1);

لا تُفرطوا في إنشاء الفهارس

قواعد تقريبية:

  • فهرسة PK ✓ (تلقائية)
  • فهرسة أعمدة UNIQUE ✓ (تلقائية)
  • فهرسة أعمدة FK ✓
  • فهرسة الأعمدة المستخدمة في WHERE أو JOIN أو ORDER BY ضمن استعلاماتكم كثيرة الاستخدام
  • لا تفهرسوا الأعمدة ذات الانتقائية المنخفضة جدًا (مثل Boolean ذي توزيع 50/50)

القياس باستخدام EXPLAIN

قبل إضافة فهرس وبعدها، شغّلوا EXPLAIN ANALYZE للتحقق من أن المخطِّط يستخدمه:

EXPLAIN ANALYZE
SELECT * FROM posts WHERE author_id = 42 ORDER BY published_at DESC LIMIT 10;

مراجعة

بالنسبة إلى مدونتنا: فهرسوا المفاتيح الخارجية (‏post_id على التعليقات، و‏author_id على المنشورات والتعليقات)، وأضيفوا (author_id, published_at DESC) إلى المنشورات لاستعلامات «أحدث المنشورات حسب المستخدم».

تحقق سريع

أضفتم مفتاحًا خارجيًا orders.user_id REFERENCES users(id). ما الفهرس الذي ينبغي إنشاؤه، إن كان هناك فهرس؟

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

هل درس «الفهارس للاستعلامات الشائعة» مجاني؟

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

ماذا ستتعلم في «الفهارس للاستعلامات الشائعة»؟

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

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

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

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

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

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

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

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

  1. نمذجة مدونة: المستخدمون والمنشورات والتعليقات
  2. اختيار المفاتيح والأنواع
  3. الفهارس للاستعلامات الشائعة
  4. تهيئة قاعدة البيانات ببيانات اختبار
← العودة إلى SQL Academy