Mencari Rekod Panggilan daripada Nombor Tidak Diketahui
Pangkalan data kami termasuk dua jadual: 'Phone_book' (mengandungi nama dan nombor telefon) dan 'Panggilan' (mengandungi log panggilan). Matlamatnya adalah untuk menentukan panggilan yang berasal daripada nombor tidak disenaraikan dalam jadual 'Buku_telefon'.
Penyelesaian:
Beberapa pertanyaan SQL boleh mencapai ini; kecekapan bergantung pada pengoptimuman pangkalan data dan saiz jadual.
Kaedah 1 (TIDAK DALAM):
Pertanyaan ringkas ini cekap untuk jadual 'Phone_book' yang lebih kecil:
<code class="language-sql">SELECT * FROM Call WHERE phone_number NOT IN (SELECT phone_number FROM Phone_book);</code>
Kaedah 2 (TIDAK WUJUD):
Pendekatan alternatif, selalunya diutamakan untuk prestasi dengan set data yang lebih besar:
<code class="language-sql">SELECT * FROM Call WHERE NOT EXISTS ( SELECT 1 FROM Phone_book WHERE Phone_book.phone_number = Call.phone_number );</code>
Kaedah 3 (SERTAI LUAR KIRI):
Pilihan ketiga menggunakan LEFT OUTER JOIN
:
<code class="language-sql">SELECT * FROM Call LEFT OUTER JOIN Phone_book ON Call.phone_number = Phone_book.phone_number WHERE Phone_book.phone_number IS NULL;</code>
Nota Penting: Untuk prestasi optimum, gantikan SELECT *
dengan senarai lajur khusus yang diperlukan daripada jadual 'Panggil'. Ini mengurangkan pengambilan data dan meningkatkan kelajuan pertanyaan.
Atas ialah kandungan terperinci Bagaimana Mengenalpasti Panggilan daripada Nombor Telefon Tidak Tersenarai dalam Pangkalan Data Terpaut?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!