شرح صفوف ومحتوى الفقرة
في معيار 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;