Tidak ada tipe gabungan "lebih baik" atau "lebih buruk". Mereka memiliki arti yang berbeda dan mereka harus digunakan tergantung padanya.
Dalam kasus Anda, Anda mungkin tidak memiliki karyawan tanpa work_log (tidak ada baris dalam tabel itu), jadi LEFT JOIN
dan JOIN
hasilnya akan setara. Namun, jika Anda memiliki hal seperti itu (karyawan baru tanpa work_log terdaftar), JOIN
hapus karyawan itu, sedangkan yang kiri bergabung (yang tabel pertamanya adalah karyawan) akan menunjukkan semuanya, dan nol di bidang dari work_log jika ada tidak cocok.
Sekali lagi, kinerja adalah hal sekunder untuk kebenaran permintaan. Beberapa orang mengatakan bahwa Anda tidak boleh menggunakan LEFT JOIN
s. Memang benar bahwa LEFT JOIN memaksa optimizer untuk mengeksekusi query dalam satu urutan tertentu, mencegah beberapa optimisasi (pemesanan ulang tabel) dalam beberapa kasus. Ini salah satu contohnya . Tetapi Anda tidak boleh memilih satu dari yang lain jika kebenaran / makna dikorbankan, karena INNER JOIN tidak secara inheren lebih buruk. Sisa dari optimasi yang biasa berlaku seperti biasa.
Singkatnya, jangan gunakan LEFT JOIN
jika Anda benar-benar jahat INNER JOIN
.
Di MySQL CROSS JOIN
, INNER JOIN
dan JOIN
sama. Dalam standar, dan secara semantik, a CROSS JOIN
adalah INNER JOIN
tanpa ON
klausa, sehingga Anda mendapatkan setiap kombinasi baris di antara tabel.
Anda memiliki contoh semua jenis semantik bergabung di Wikipedia . Dalam praktiknya, di MySQL, kita cenderung hanya menulis JOIN
dan LEFT JOIN
.
JOIN
menyiratkan wajar tanpa pengecualianINNER JOIN
Gabung mana yang lebih baik kinerjanya jika semuanya memberikan hasil yang sama?
Saya menambahkan jawaban sebelumnya, untuk apa yang saya tahu, MySQL dioptimalkan untuk memiliki kinerja yang sama.
Dengan indeks yang baik, misalnya,
JOIN
vsLEFT JOIN
+WHERE
klausa untuk memfilter, akan menjadi hal yang sama. Pengoptimalan vs Membaca Manusia masuk akal pada pertanyaan besar dengan banyak bergabung.Menggunakan indeks dan cache yang baik lebih penting.
Anda dapat membaca penjelasan yang bagus tentang proses optimasi di sini:
Proses Optimasi Kueri : Permintaan sering kali dapat dijalankan dengan berbagai cara dan menghasilkan hasil yang sama. Tugas pengoptimal adalah menemukan opsi terbaik.
sumber