Rumah > pangkalan data > tutorial mysql > SERTAI Kriteria lwn. MANA Penapisan Klausa: Pertanyaan SQL Yang Berprestasi Lebih Baik?

SERTAI Kriteria lwn. MANA Penapisan Klausa: Pertanyaan SQL Yang Berprestasi Lebih Baik?

Patricia Arquette
Lepaskan: 2025-01-04 22:48:40
asal
410 orang telah melayarinya

JOIN Criteria vs. WHERE Clause Filtering: Which SQL Query Performs Better?

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

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!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan