Mengoptimumkan pertanyaan penyertaan kiri: menapis dahulu atau menapis terakhir?
Dalam analisis dan pemprosesan data, selalunya perlu menapis data dalam jadual sebelum melakukan cantuman kiri untuk memastikan hanya baris yang diperlukan dalam jadual kiri disertakan dalam hasil cantuman.
Huraian Masalah
Andaikan terdapat dua jadual, "Pelanggan" dan "Entri". Kami ingin melakukan gabungan kiri berdasarkan lajur "Pelanggan", tetapi hanya masukkan lajur "Kategori" dalam "Jadual Kemasukan" bersamaan dengan ' D ' kemasukan. Jika anda menggunakan penapis menggunakan klausa WHERE
selepas gabungan, baris yang sepadan dalam jadual kiri akan dikecualikan.
Penyelesaian
Untuk menapis jadual kiri sebelum menyertai, alihkan syarat penapis ke fasal ON
penyataan gabungan kiri. Ini memastikan bahawa baris jadual kiri ditapis sebelum dicantumkan dengan jadual kanan.
<code class="language-sql">SELECT c.Customer, c.State, e.Entry FROM Customer c LEFT JOIN Entry e ON c.Customer = e.Customer AND e.Category = 'D'</code>
Penjelasan
Dalam pertanyaan ini, klausa ON
mengandungi syarat tambahan e.Category = 'D'
yang menapis "jadual entri" berdasarkan lajur "kategori". Baris daripada jadual Pelanggan akan disertakan dalam gabungan hanya jika terdapat Pelanggan dalam jadual Pelanggan yang sepadan dengan nilai Kategori yang ditentukan.
Kelebihan
Menapis jadual kiri sebelum menyertai memastikan:
Kesimpulan
Dengan teknik ini, anda boleh menapis data dalam jadual dengan berkesan sebelum melakukan gabungan kiri. Ini memastikan bahawa hasil sambungan menggambarkan dengan tepat keperluan data yang diperlukan untuk analisis atau tugas pemprosesan data.
Atas ialah kandungan terperinci Sekiranya Anda Menapis Sebelum atau Selepas Gabungan Kiri?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!