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

Gabung Kiri mengungguli Gabung Dalam?

Jika Anda berpikir bahwa implementasi LEFT JOIN adalah INNER JOIN + lebih banyak pekerjaan, maka hasil ini membingungkan. Bagaimana jika implementasi INNER JOIN adalah (LEFT JOIN + filtering)? Ah, sudah jelas sekarang.

Dalam rencana kueri, satu-satunya perbedaan adalah ini:pengguna... ekstra:menggunakan di mana . Ini berarti penyaringan. Ada langkah pemfilteran ekstra dalam kueri dengan gabungan dalam.

Ini adalah jenis pemfilteran yang berbeda dari yang biasanya digunakan dalam klausa where. Sangat mudah untuk membuat indeks di A untuk mendukung tindakan pemfilteran ini.

SELECT *
FROM A
WHERE A.ID = 3

Pertimbangkan kueri ini:

SELECT *
FROM A
  LEFT JOIN B
  ON A.ID = B.ID
WHERE B.ID is not null

Query ini setara dengan inner join. Tidak ada indeks pada B yang akan membantu tindakan penyaringan itu. Alasannya adalah klausa where menyatakan kondisi pada hasil gabungan, bukan kondisi pada B.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. $filter tidak berfungsi di JPA/Olingo 2.0.11 dengan MySQL

  2. Salin/duplikat database tanpa menggunakan mysqldump

  3. SQL ORDER BY menggunakan pernyataan yang disiapkan

  4. Menyalin database mysql dari satu komputer ke komputer lain

  5. MySQL mengambil catatan terbaru untuk Grup