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:
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!