لا توجد قاعدة صحيحة تقول إن EXISTS أسرع دائمًا من IN، أو العكس. يختار محسن الاستعلامات خطة التنفيذ بناءً على بنية الاستعلام والفهارس والإحصاءات وحجم البيانات. ويمكن أن يحول صيغًا مختلفة إلى خطط متشابهة، ولذلك لا يكفي شكل الكود وحده للحكم على السرعة.
ابدأ بالتأكد من أن الصيغتين تعبران عن المعنى نفسه في سياق الاستخدام. بعد ذلك افحص خطة التنفيذ باستخدام EXPLAIN، وقِس الأداء على بيانات تمثل الاستخدام الفعلي. يجب الانتباه إلى أعمدة الربط والفهارس المناسبة، لأن تغيير الكلمة المستخدمة قد يكون أقل أثرًا من توفير مسار وصول جيد للبيانات.
مثال
EXPLAIN
SELECT 1 AS customer_id
WHERE EXISTS (
SELECT 1
FROM (SELECT 1 AS customer_id) AS o
WHERE o.customer_id = 1
);
هذا المثال يوضح طلب خطة التنفيذ، لكنه لا يمثل اختبار أداء واقعيًا. الحكم العملي يحتاج إلى جداول وأحجام وتوزيع قيم مشابهة للتطبيق.
باختصار: اختر الصيغة الواضحة والصحيحة، ثم افحص الخطة والقياسات بدل الاعتماد على قاعدة سرعة مطلقة.
هل تريد تعلّم SQL خطوة بخطوة مع تمارين عملية؟ تابع مسار SQL من الأساسيات للاحتراف.