Rumah > Artikel > pangkalan data > Pendekatan manakah yang Terbaik untuk Memilih Baris Hadir dalam Satu Jadual Tetapi Bukan Satu Jadual Lain: \'TIDAK WUJUD\' atau \'LEFT JOIN\'?
Mengoptimumkan "Mysql pilih di mana tiada dalam jadual" untuk Mendapatkan Data Cekap
Apabila berurusan dengan dua jadual (A dan B) dengan primer yang sama kekunci, tugas memilih baris yang ada dalam A tetapi tiada dalam B timbul biasa. Pendekatan standard, menggunakan klausa "TIDAK WUJUD", mengalami had prestasi.
Tidak Wujud lwn. Sertai Kiri
Pertanyaan "TIDAK WUJUD" yang anda sebutkan menyemak kerana ketiadaan baris yang sepadan dalam B untuk setiap baris dalam A. Proses ini, yang dikenali sebagai anti-cantum, boleh menjadi tidak cekap untuk set data yang besar. Sebaliknya, pendekatan gabungan kiri yang anda cadangkan mencari nilai nol dalam lajur B.y untuk setiap baris dalam A. Ini boleh menjadi penyelesaian yang lebih berkesan.
Ungkapan Pertanyaan Yang Diperbaiki
Walau bagaimanapun, terdapat peningkatan kecil yang boleh dibuat pada pertanyaan penyertaan kiri anda:
SELECT A.* FROM A LEFT JOIN B ON A.x = B.y WHERE B.y IS NULL
Dengan memilih secara eksplisit hanya lajur daripada jadual A (A.*), anda mengoptimumkan pertanyaan dengan mengambil hanya yang diperlukan data.
Kesimpulan
Walaupun klausa "TIDAK WUJUD" kekal sebagai pilihan yang berdaya maju untuk set data kecil, pendekatan gabungan kiri dengan ungkapan pertanyaan yang dipertingkat memberikan prestasi yang lebih baik untuk yang lebih besar volum data. Ini membolehkan anda mendapatkan semula baris yang wujud dalam jadual A dengan cekap tetapi tidak dalam jadual B.
Atas ialah kandungan terperinci Pendekatan manakah yang Terbaik untuk Memilih Baris Hadir dalam Satu Jadual Tetapi Bukan Satu Jadual Lain: \'TIDAK WUJUD\' atau \'LEFT JOIN\'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!