sql >> Database teknologi >  >> RDS >> Mysql

WHERE-klausul efterfulgt af JOIN

Jeg tror, ​​du forveksler SQL-syntaksen med udførelsesflowet udført af RDBMS-motoren:denne forespørgsel

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'

vil blive optimeret til kun at udføre en join til rækkerne af big filtreret af foo='bar' tilstand, ikke på hele big , af enhver forespørgselsoptimering, der er saltet værd, på trods af at WHERE klausul vises tekstmæssigt efter JOIN .

Du ønsker måske at omskrive dette uden en indre SELECT sådan her:

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 Contiguous Sequential Rows Field selv ved sletning og indsættelse

  2. Brug af Barman til at sikkerhedskopiere PostgreSQL - en oversigt

  3. Sådan fungerer DATE_ADD() i MariaDB

  4. Opbevar multidimensional array i databasen:relationel eller multidimensional?