sql >> Database >  >> RDS >> Mysql

WHERE-component gevolgd door JOIN

Ik denk dat je de syntaxis van SQL verwart met de uitvoeringsstroom die wordt uitgevoerd door de RDBMS-engine:deze query

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'

wordt geoptimaliseerd om alleen een samenvoeging uit te voeren naar de rijen van big gefilterd door de foo='bar' staat, niet op de hele big , door elke query-optimizer die zijn zout waard is, ondanks het feit dat de WHERE clausule verschijnt tekstueel na de JOIN .

Misschien wil je dit herschrijven zonder een innerlijke SELECT zoals dit:

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'


  1. MySQL - Resultaten van de ene query gebruiken in een andere query

  2. GET-parameters kwetsbaar voor SQL-injectie - PHP

  3. U kunt nu toegang gebruiken met Microsoft Azure MFA!

  4. PHP MySQL-query met trefwoorden/gereserveerde woorden