Мисля, че грешите синтаксиса на SQL за потока на изпълнение, извършен от двигателя на RDBMS:тази заявка
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'