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\"?

Pendekatan manakah yang Terbaik untuk Memilih Baris Hadir dalam Satu Jadual Tetapi Bukan Satu Jadual Lain: \"TIDAK WUJUD\" atau \"LEFT JOIN\"?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-26 12:01:02182semak imbas

Which Approach is Best for Selecting Rows Present in One Table But Not Another:

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!

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