मुझे लगता है कि आप RDBMS इंजन द्वारा निष्पादित निष्पादन के प्रवाह के लिए SQL के सिंटैक्स की गलती करते हैं:यह क्वेरी
SELECT a,b FROM big b
LEFT JOIN (SELECT b as small_b,c,d FROM small) ON big.b=small.small_b
WHERE b.foo='bar'
केवल big
. की पंक्तियों में शामिल होने के लिए अनुकूलित किया जाएगा foo='bar'
. द्वारा फ़िल्टर किया गया शर्त, संपूर्ण big
. पर नहीं , किसी भी क्वेरी ऑप्टिमाइज़र द्वारा जो इसके नमक के लायक है, इस तथ्य के बावजूद कि WHERE
JOIN
. के बाद क्लॉज टेक्स्ट के रूप में दिखाई देता है ।
आप इसे बिना किसी आंतरिक SELECT
. के फिर से लिखना चाह सकते हैं इस तरह:
SELECT t1.a as big_a, t1.b as big_b, t2.b as small_b, t2.c, t2.d
FROM big t1
LEFT JOIN small t2 ON t1.b = t2.b
WHERE t1.foo='bar'