Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memilih Baris dengan Cekap daripada Jadual A yang Tiada dalam Jadual B?

Bagaimana untuk Memilih Baris dengan Cekap daripada Jadual A yang Tiada dalam Jadual B?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-26 06:02:30688semak imbas

 How to Efficiently Select Rows from Table A that are Not in Table B?

Memilih Baris daripada Jadual A dengan Cekap Dikecualikan daripada Jadual B

Apabila berurusan dengan dua jadual (A dan B) berkongsi kunci utama yang sama, tugas biasa adalah untuk mengekstrak semua baris yang terdapat dalam A tetapi tidak dalam B. Penyelesaian sedia ada, seperti menggunakan klausa "TIDAK WUJUD", mungkin menunjukkan isu prestasi.

Untuk meningkatkan kecekapan, adalah disyorkan untuk menggunakan pendekatan bergabung kiri. Sintaks untuk penyelesaian berasaskan gabungan kiri adalah seperti berikut:

SELECT *
FROM A
LEFT JOIN B ON A.x = B.y
WHERE B.y IS NULL;

Pendekatan ini membandingkan setiap baris dalam jadual A dengan baris yang sepadan dalam jadual B dengan menggabungkannya berdasarkan medan biasa "x" (dengan andaian ia wujud). Baris daripada jadual A yang tidak mempunyai baris yang sepadan dalam jadual B akan dikembalikan kerana klausa "WHERE" menapis baris dengan "B.y" ialah NULL, yang menunjukkan padanan yang tiada.

Sebagai alternatif, sintaks berikut boleh digunakan untuk mencapai hasil yang sama:

SELECT A.*
FROM A
LEFT JOIN B ON A.x = B.y
WHERE B.y IS NULL;

Sintaks ini secara eksplisit memilih lajur daripada jadual A, memastikan tiada data yang tidak perlu diambil.

Secara amnya, pendekatan gabungan kiri ialah cara yang lebih cekap untuk melaksanakan operasi "pilih di mana tiada dalam jadual" berbanding klausa "TIDAK WUJUD". Walaupun peningkatan prestasi khusus mungkin berbeza-beza bergantung pada saiz dan struktur data, cantuman kiri cenderung untuk mengatasi alternatif, terutamanya apabila bilangan baris dalam jadual B jauh lebih kecil daripada jadual A.

Atas ialah kandungan terperinci Bagaimana untuk Memilih Baris dengan Cekap daripada Jadual A yang Tiada dalam Jadual B?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn