Saya pikir Anda salah mengartikan sintaks SQL untuk aliran eksekusi yang dilakukan oleh mesin RDBMS:kueri ini
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'
akan dioptimalkan untuk melakukan penggabungan hanya pada baris big
difilter oleh foo='bar'
kondisi, tidak secara keseluruhan big
, oleh pengoptimal kueri apa pun yang sepadan dengan garamnya, terlepas dari kenyataan bahwa WHERE
klausa muncul secara tekstual setelah JOIN
.
Anda mungkin ingin menulis ulang ini tanpa SELECT
inner bagian dalam seperti ini:
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'