Myślę, że mylisz składnię SQL z przepływem wykonywania wykonywanym przez silnik RDBMS:to zapytanie
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'
zostanie zoptymalizowany do wykonywania złączenia tylko do wierszy big
filtrowane przez foo='bar'
warunek, a nie na całym big
, przez dowolny wart swojej uwagi optymalizator zapytań, pomimo faktu, że WHERE
klauzula pojawia się tekstowo po JOIN
.
Możesz chcieć przepisać to bez wewnętrznego SELECT
tak:
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'