Rumah >pangkalan data >tutorial mysql >JOIN lwn. WHERE Klausa untuk Penapisan: Pertanyaan SQL manakah yang Lebih Pantas?

JOIN lwn. WHERE Klausa untuk Penapisan: Pertanyaan SQL manakah yang Lebih Pantas?

Susan Sarandon
Susan Sarandonasal
2024-12-28 19:55:14805semak imbas

JOIN vs. WHERE Clause for Filtering: Which SQL Query is Faster?

Kriteria Penapis dalam Pertanyaan SQL: Klausa Sertai vs. Dimana

Apabila menanyakan data dalam SQL, terdapat dua pendekatan biasa untuk menggunakan kriteria penapis : Kriteria Sertai dan Klausa Dimana. Pembangun sering bergelut dengan persoalan pendekatan mana yang lebih cekap.

Soalan:

Pertanyaan SQL yang manakah berprestasi lebih pantas: pertanyaan yang menggunakan penapis pada Kriteria Sertai atau di mana Klausa?

Analisis:

Pertimbangkan dua pertanyaan:

Pertanyaan 1 (Tapis pada Kriteria Sertai):

SELECT *
FROM TableA a
INNER JOIN TableXRef x ON a.ID = x.TableAID
INNER JOIN TableB b ON x.TableBID = b.ID
WHERE a.ID = 1;

Pertanyaan 2 (Tapis di Mana Klausa):

SELECT *
FROM TableA a
INNER JOIN TableXRef x ON a.ID = x.TableAID AND a.ID = 1
INNER JOIN TableB b ON x.TableBID = b.ID;

Perbandingan Prestasi:

Secara empirikal, ujian mendedahkan bahawa Klausa Dimana adalah lebih pantas sedikit daripada Kriteria Sertai. Ini berlawanan dengan intuisi kerana seseorang mungkin menjangkakan Kriteria Sertai akan mengurangkan keputusan yang ditetapkan lebih awal.

Ketekalan Logik:

Selain prestasi, pertimbangkan ketekalan logik setiap pendekatan. Menggunakan Klausa Dimana memastikan bahawa operasi kekal sah walaupun Cantum digantikan dengan Cantuman Kiri.

Pendekatan Disyorkan:

Berdasarkan prestasi dan konsistensi logik, ia biasanya disyorkan untuk menggunakan kriteria penapis pada Di mana Klausa.

Contoh:

Pertimbangkan pertanyaan berikut:

SELECT *
FROM TableA a
LEFT JOIN TableXRef x ON x.TableAID = a.ID AND a.ID = 1
LEFT JOIN TableB b ON x.TableBID = b.ID;

Pertanyaan ini adalah logik dan berfungsi serta pertanyaan yang setara dengan penapis pada Sertai Kriteria.

Kesimpulan:

Walaupun Kriteria Sertai dan Klausa Di mana menunjukkan prestasi yang sama dari sudut prestasi, Klausa Dimana secara logiknya lebih konsisten dan dengan itu pendekatan pilihan untuk memohon penapis kriteria dalam pertanyaan SQL.

Atas ialah kandungan terperinci JOIN lwn. WHERE Klausa untuk Penapisan: Pertanyaan SQL manakah yang Lebih Pantas?. 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