0Pricing
SQL Academy · درس

UNION ALL مقابل UNION (تكلفة إزالة التكرارات)

افهم عمل إزالة التكرارات الذي ينفذه UNION، ولماذا يكون UNION ALL أسرع عندما تعلم عدم وجود تكرارات.

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

الفرق

  • UNION — يدمج ويزيل التكرارات
  • UNION ALL — يدمج ويحتفظ بكل صف

UNION ALL أسرع

إزالة التكرارات مكلفة (فرز أو تجزئة). أما UNION ALL فيتجاوزها بالكامل. عندما تعلم أنه لا يمكن وجود تكرارات، اختر UNION ALL دائمًا.

مثال: عندما يكون كل جانب منفصلًا

لا تتداخل الطلبات النشطة والمؤرشفة مطلقًا — استخدم UNION ALL:

SELECT * FROM active_orders
UNION ALL
SELECT * FROM archived_orders;

مثال: عندما تكون التكرارات مهمة

دمج قائمة بأحداث الطلبات التي قد تحتوي على صفوف متكررة: قد ترغب فعلًا في احتساب كل تكرار — استخدم UNION ALL.

SELECT order_id FROM email_events
UNION ALL
SELECT order_id FROM push_events;

مثال: عندما تريد إزالة التكرارات

قائمتان للنشرات البريدية، تظهر بعض عناوين البريد الإلكتروني في كلتيهما — وتريد صفًا واحدًا لكل بريد إلكتروني فريد:

SELECT email FROM list_a
UNION
SELECT email FROM list_b;

UNION ALL مع مصادر مختلفة

جمّع جداول المقاييس لإنشاء موجز «جميع التقارير»:

SELECT 'login' AS event, ts, user_id FROM logins
UNION ALL
SELECT 'signup',          ts, user_id FROM signups
UNION ALL
SELECT 'purchase',        ts, user_id FROM purchases
ORDER BY ts DESC LIMIT 100;

الترتيب داخل كل استعلام فرعي

تتجاهل معظم قواعد البيانات ORDER BY داخل الاستعلامات الفرعية الفردية في UNION/UNION ALL (ما لم تكن مُغلّفة). طبّق ORDER BY في النهاية:

SELECT ... FROM a
UNION ALL
SELECT ... FROM b
ORDER BY ts DESC;

LIMIT لكل جانب

ضع كل جانب بين قوسين لتطبيق LIMIT بشكل مستقل:

(SELECT id FROM new_orders ORDER BY created_at DESC LIMIT 10)
UNION ALL
(SELECT id FROM old_orders ORDER BY created_at DESC LIMIT 10);

متى يُحسّن المُخطِّط UNION

إذا استطاع المُخطِّط إثبات أن الجانبين منفصلان (مثل مرشحات WHERE المتنافية)، فقد ينفّذ UNION داخليًا على أنه UNION ALL — لكن لا تعتمد على ذلك. كن صريحًا.

UNION مقابل OR

بالنسبة إلى شروط OR التي لا يمكنها استخدام الفهرس نفسه بكفاءة، قد يكون UNION ALL لاستعلامين مفهرسين بشكل منفصل أسرع:

-- Slow OR (may not use either index):
SELECT * FROM users WHERE city = 'NYC' OR country = 'DE';

-- Sometimes faster:
SELECT * FROM users WHERE city = 'NYC'
UNION
SELECT * FROM users WHERE country = 'DE';

انتبه إلى ترتيب الأعمدة

تطابق معاملات المجموعات حسب الموضع، وليس حسب الاسم. SELECT a, b FROM t1 UNION ALL SELECT b, a FROM t2 يبدّل المعنى — لذا انتبه.

خلاصة

استخدم UNION ALL افتراضياً لتحسين الأداء؛ ولا تستخدم UNION إلا عندما تحتاج فعلاً إلى إزالة التكرارات.

تحقق سريع

متى يمكن استبدال UNION بـ UNION ALL الأسرع؟

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

هل درس «UNION ALL مقابل UNION (تكلفة إزالة التكرارات)» مجاني؟

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

ماذا ستتعلم في «UNION ALL مقابل UNION (تكلفة إزالة التكرارات)»؟

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

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

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

كم من الوقت يستغرق درس «UNION ALL مقابل UNION (تكلفة إزالة التكرارات)»؟

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

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

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

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

  1. UNION وINTERSECT وEXCEPT
  2. UNION ALL مقابل UNION (تكلفة إزالة التكرارات)
  3. تعبيرات CASE واستعلامات Pivot
  4. أنماط Crosstab (PostgreSQL crosstab())
← العودة إلى SQL Academy