انتقل إلى محتوى الدرس

Accidental Missing ON Clause Risk خطر الربط التبادلي العشوائي

تعلّم الربط التبادلي CROSS JOIN والربط الذاتي SELF JOIN في MySQL بأسلوب MySQL 8 الحديث مع أمثلة استعلامات SQL وتطبيقات تفاعلية.
1 صفوف تعليمية
MySQL
7 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

في معيار SQL القياسي، يشترط INNER JOIN وجود جملة ON أو USING. غير أن MySQL يعامل الكلمات JOIN وINNER JOIN وCROSS JOIN كمترادفات نحوية؛ فإذا كتبت FROM users JOIN orders ونسيت سهواً كتابة شرط ON، فلن يطلق MySQL خطأ نحوياً، بل سينفذ ضرباً ديكارتياً كاملاً بصمت!

  • خطر انفجار عدد الصفوف: إن ربط جدول يضم 50,000 مستخدم بجدول يضم 200,000 طلب بدون شرط ON يحاول توليد 10 مليارات صف، مما يستنزف المعالج والذاكرة فوراً.
SQL
-- Always include ON or USING when writing INNER JOIN in MySQL
SELECT
  u.user_id,
  o.order_id
FROM users AS u
INNER JOIN orders AS o
  ON u.user_id = o.user_id
LIMIT 10;