Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Klauzula WHERE, po której następuje JOIN

Myślę, że mylisz składnię SQL z przepływem wykonywania wykonywanym przez silnik RDBMS:to zapytanie

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'

zostanie zoptymalizowany do wykonywania złączenia tylko do wierszy big filtrowane przez foo='bar' warunek, a nie na całym big , przez dowolny wart swojej uwagi optymalizator zapytań, pomimo faktu, że WHERE klauzula pojawia się tekstowo po JOIN .

Możesz chcieć przepisać to bez wewnętrznego SELECT tak:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nie można załadować wtyczki uwierzytelniającej „caching_sha2_password” w Netbean

  2. Wiele stanów końcowych zapytań w MySQL, wszystkie połączenia używane w ciągu kilku minut

  3. Czy można uzyskać całkowitą liczbę wierszy z limitem przesunięcia?

  4. Jak utworzyć instrukcję if wewnątrz echo w PHP MySQLi

  5. Ile pól jest normalnie w jednej tabeli?