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'