Jag tror att du missar syntaxen för SQL för flödet av exekvering som utförs av RDBMS-motorn:den här frågan
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'
kommer att optimeras för att utföra en koppling endast till raderna av big
filtreras av foo='bar'
skick, inte på hela big
, av valfri frågeoptimerare som är värd sitt salt, trots att WHERE
satsen visas textmässigt efter JOIN
.
Du kanske vill skriva om detta utan en inre SELECT
så här:
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'