Rumah >pangkalan data >tutorial mysql >Di mana Klausa dalam MySQL Bergabung: ON lwn. WHERE – Mana yang Lebih Cekap?

Di mana Klausa dalam MySQL Bergabung: ON lwn. WHERE – Mana yang Lebih Cekap?

Patricia Arquette
Patricia Arquetteasal
2024-12-09 15:54:12479semak imbas

Where Clause in MySQL Joins:  ON vs. WHERE – Which is More Efficient?

MySQL Join Optimization with Where Clause

Dalam MySQL, penyambungan dua jadual boleh dilakukan menggunakan pelbagai jenis cantuman. Apabila melakukan gabungan kiri dan ingin menggunakan syarat berdasarkan lajur daripada satu atau kedua-dua jadual, peletakan syarat boleh memberi kesan kepada kecekapan dan hasil pertanyaan.

Pertimbangkan senario berikut:

  • Kami mempunyai dua jadual, kategori dan pengguna_kategori_langganan, dan ingin mendapatkan semua kategori dan kategori dilanggan oleh pengguna tertentu.
  • Lajur category_id ialah kunci dalam kedua-dua jadual dan user_id hadir dalam jadual user_category_subscriptions.

Pertanyaan berikut mencapai hasil yang diingini:

SELECT *
FROM categories
LEFT JOIN user_category_subscriptions
ON user_category_subscriptions.category_id = categories.category_id AND user_category_subscriptions.user_id = 1;

Walau bagaimanapun, menggunakan klausa WHERE dan bukannya klausa DAN dalam cantuman boleh membawa kepada kecekapan berkurangan:

SELECT *
FROM categories
LEFT JOIN user_category_subscriptions
ON user_category_subscriptions.category_id = categories.category_id
WHERE user_category_subscriptions.user_id = 1;

Dalam cantuman luar, peletakan syarat dalam klausa cantum atau klausa WHERE mengubah tingkah lakunya secara drastik. Apabila dinyatakan dalam cantuman, hanya subset baris yang memenuhi syarat digabungkan, menghasilkan pemilihan baris yang cekap. Sebaliknya, menggunakan klausa WHERE menapis baris yang telah dicantumkan, membuang mana-mana yang tidak memenuhi syarat.

Oleh itu, untuk menanya dengan cekap semua kategori dan yang dilanggan oleh pengguna tertentu, meletakkan syarat dalam gabungan klausa adalah disyorkan. Pendekatan ini memastikan bahawa hanya baris yang berkaitan digabungkan, memberikan hasil yang lebih cepat dan lebih tepat.

Atas ialah kandungan terperinci Di mana Klausa dalam MySQL Bergabung: ON lwn. WHERE – Mana yang Lebih Cekap?. 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