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

DDD
Lepaskan: 2024-10-26 11:49:29
asal
749 orang telah melayarinya

 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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!