فاديا جميل نشر 12 أكتوبر 2021 أرسل تقرير نشر 12 أكتوبر 2021 لدي الاستعلام من الشكل: SELECT * FROM Table1 LEFT JOIN Table2 ON Table1.id = Table2.user_id WHERE Table2.role='Admin' كيف أحصل على فلترة بشكل أسرع 1 اقتباس
1 Wael Aljamal نشر 12 أكتوبر 2021 أرسل تقرير نشر 12 أكتوبر 2021 حسب ترتيب خطوات تنفيذ الاستعلام في SQL سيتم تنفيذ جزء ON قبل جزء WHERE لذلك يمكننا نقل الشرط لتتم الفلترة بناءً عليه بخطوة قبل وهذا يسرع الأداء، حيث لا نحتاج WHERE بعدها SELECT * FROM Table1 LEFT JOIN Table2 ON Table1.id = Table2.user_id AND Table2.role='Admin' ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^ لاحظ نقل شرط WHERE ودمجه مع شرط الربط. WHERE تعمل على الجدول الناتج من عملية الربط، أي سيكون هنالك بيانات أكثر لاختبارها، لذلك نضع الشرط مع جزء ON ضع دائمًا شروط الدمج في جملة ON إذا كنت تقوم بإجراء INNER JOIN. أي لا تضف أي شروط من WHERE إلى جملة ON ، بل ضعها في جملة WHERE إذا كنت تقوم بتنفيذ LEFT JOIN ، فقم بإضافة أي شروط WHERE إلى جملة ON للجدول الموجود في الجانب الأيمن من الدمج. هذا أمر لا بد منه ، لأن إضافة جملة WHERE تشير إلى الجانب الأيمن من الدمج ستحوله إلى INNER JOIN. الاستثناء هو عندما تبحث عن السجلات غير الموجودة في جدول معين. يمكنك إضافة المرجع إلى معرّف فريد (ليس فارغًا أبدًا) في جدول RIGHT JOIN إلى جملة WHERE بهذه الطريقة: WHERE t2.idfield IS NULL. لذا ، فإن المرة الوحيدة التي يجب أن تشير فيها إلى جدول على الجانب الأيمن من الصلة هي العثور على تلك السجلات غير الموجودة في الجدول. 3 اقتباس
السؤال
فاديا جميل
لدي الاستعلام من الشكل:
SELECT * FROM Table1 LEFT JOIN Table2 ON Table1.id = Table2.user_id WHERE Table2.role='Admin'
كيف أحصل على فلترة بشكل أسرع
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.