Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Klausa WHERE diikuti oleh JOIN

Saya pikir Anda salah mengartikan sintaks SQL untuk aliran eksekusi yang dilakukan oleh mesin RDBMS:kueri ini

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'

akan dioptimalkan untuk melakukan penggabungan hanya pada baris big difilter oleh foo='bar' kondisi, tidak secara keseluruhan big , oleh pengoptimal kueri apa pun yang sepadan dengan garamnya, terlepas dari kenyataan bahwa WHERE klausa muncul secara tekstual setelah JOIN .

Anda mungkin ingin menulis ulang ini tanpa SELECT inner bagian dalam seperti ini:

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. Menyimpan gambar di MySQL dari Java

  2. PESAN OLEH id DESC

  3. MYSQL Inner Gabungkan dua tabel melalui dua kunci

  4. bagaimana cara menggunakan string pelarian nyata mysql?

  5. MYSQL Kiri Bergabung dengan baris hasil terakhir