Rumah >pangkalan data >tutorial mysql >SERTAI Kriteria lwn. MANA Penapisan Klausa: Pertanyaan SQL Yang Berprestasi Lebih Baik?
Pertanyaan SQL Manakah yang Lebih Cepat: Sertai Kriteria atau Di Mana Penapis Klausa?
Soalan Asal:
Pendekatan mana yang lebih cekap: menapis pada kriteria gabungan atau di WHERE klausa?
Analisis Prestasi:
Bertentangan dengan kepercayaan popular, ujian telah mendedahkan bahawa penapis klausa WHERE adalah lebih pantas sedikit daripada penapis kriteria gabungan. Perbezaan dalam prestasi, bagaimanapun, adalah tidak ketara.
Rancangan Pelaksanaan Pertanyaan:
Kedua-dua struktur pertanyaan menghasilkan rancangan pelaksanaan yang sama, kerana ia menghasilkan set hasil yang ditapis yang sama.
Logik Ketekalan:
Dari sudut pandangan logik, adalah lebih baik untuk menggunakan penapis pada klausa WHERE, kerana ia masih masuk akal apabila JOIN DALAM diganti dengan JOIN KIRI:
SELECT * FROM TableA a LEFT JOIN TableXRef x ON x.TableAID = a.ID LEFT JOIN TableB b ON x.TableBID = b.ID WHERE a.id = 1
Pertanyaan ini hanya akan mengembalikan rekod dengan a.id ialah 1, tanpa mengira jenis JOIN. Oleh itu, penapis klausa WHERE lebih konsisten secara logik dalam senario di mana penilaian malas diperlukan.
Kesimpulan:
Walaupun terdapat sedikit kelebihan prestasi untuk menggunakan klausa WHERE penapis, pilihan antara kedua-dua pendekatan harus mempertimbangkan ketekalan logik dan kebolehbacaan kod.
Atas ialah kandungan terperinci SERTAI Kriteria lwn. MANA Penapisan Klausa: Pertanyaan SQL Yang Berprestasi Lebih Baik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!