Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Memilih Baris dengan Cekap daripada Satu Jadual yang Tidak Hadir dalam Jadual Lain?

Bagaimana untuk Memilih Baris dengan Cekap daripada Satu Jadual yang Tidak Hadir dalam Jadual Lain?

DDD
DDDasal
2024-10-26 11:49:29686semak imbas

 How to Efficiently Select Rows from One Table that Are Not Present in Another Table?

MySQL Memilih Baris Tidak Hadir dalam Jadual Lain

Untuk mendapatkan semua baris yang wujud dalam Jadual A tetapi tidak dalam Jadual B sambil berkongsi asas biasa kunci, beberapa kaedah tersedia, dengan implikasi prestasi yang berbeza-beza.

Menggunakan Subkueri dengan NOT EXISTS:

Pendekatan awal anda dengan subkueri menggunakan NOT EXISTS adalah berdaya maju pilihan, tetapi boleh menjadi agak perlahan, terutamanya dengan set data yang lebih besar.

Menggunakan Sertai Kiri:

Seperti yang anda dapati, gabungan kiri boleh berprestasi lebih pantas. Apabila menyertai Jadual A dengan Jadual B pada lajur kongsi, baris dalam Jadual A yang tidak sepadan dengan mana-mana baris dalam Jadual B akan mempunyai nilai NULL dalam lajur gabungan. Penapisan untuk nilai NULL ini secara berkesan mengasingkan baris yang dikehendaki.

Contoh Kod:

<code class="sql">SELECT *
FROM A
LEFT JOIN B ON A.x = B.y
WHERE B.y IS NULL;</code>

Petua Tambahan:

  • Pastikan pengindeksan yang betul pada lajur gabungan untuk kedua-dua jadual.
  • Gunakan indeks penutup pada Jadual B untuk mengurangkan bilangan bacaan cakera.
  • Pertimbangkan untuk menggunakan pertanyaan UNION dengan penapis negatif untuk mengecualikan baris secara eksplisit daripada Jadual B.

Kesimpulan Keseluruhan:

Walaupun kaedah cantum kiri lazimnya mengatasi pendekatan subquery, penyelesaian optimum mungkin berbeza bergantung pada set data dan skema tertentu. Percubaan dan ujian prestasi disyorkan untuk menentukan pendekatan yang paling cekap dalam setiap situasi.

Atas ialah kandungan terperinci Bagaimana untuk Memilih Baris dengan Cekap daripada Satu Jadual yang Tidak Hadir dalam Jadual Lain?. 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