Rumah >pangkalan data >tutorial mysql >Silang Sertai dengan WHERE lwn. Inner Join: SQL Join Mana yang Menawarkan Prestasi Lebih Baik?
Perbandingan Prestasi: Cantuman Silang dengan Klausa WHERE vs. Cantuman Dalam
Keberkesanan penggunaan cantuman silang diikuti klausa WHERE selalunya berdebat menentang prestasi gabungan dalaman. Walaupun kedua-dua pendekatan menghasilkan hasil yang serupa, mungkin terdapat situasi tertentu di mana satu berprestasi lebih baik daripada yang lain.
Cross Join with WHERE Klausa
Cambung silang menggabungkan semua baris dari dua atau lebih jadual, tanpa mengira apa-apa hubungan antara mereka. Apabila digabungkan dengan klausa WHERE, cantuman silang secara berkesan menapis baris yang dikehendaki berdasarkan predikat yang ditentukan.
Cambung Dalam
Cambungan dalam sepadan dengan baris daripada dua jadual berdasarkan perbandingan kesaksamaan yang ditakrifkan oleh klausa ON atau USING. Baris yang terhasil termasuk hanya lajur baris yang sepadan.
Pertimbangan Prestasi
Secara amnya, cantuman dalam adalah lebih cekap daripada cantuman silang dengan klausa WHERE.
Dalam cantuman silang, DBMS mesti menjana keseluruhan hasil cartesan kedua-dua jadual, yang boleh menjadi mahal dari segi pengiraan, terutamanya untuk meja besar. Menggunakan klausa WHERE kemudian menghapuskan baris yang tidak diingini, memerlukan pemprosesan tambahan.
Inner cantuman, sebaliknya, hanya menggabungkan baris yang memenuhi syarat cantum, menghapuskan keperluan untuk produk cartesian awal. Ini menghasilkan masa pelaksanaan yang lebih pantas.
Contoh
Pertimbangkan contoh pertanyaan yang disediakan:
SELECT User.* FROM User, Address WHERE User.addressId = Address.id; SELECT User.* FROM User INNER JOIN Address ON (User.addressId = Address.id);
Pertanyaan kedua menggunakan cantuman dalaman biasanya akan laksanakan lebih cepat daripada pertanyaan pertama dengan gabungan silang dan klausa WHERE. DBMS boleh terus memilih baris yang dikehendaki daripada jadual Pengguna berdasarkan perbandingan kesaksamaan, tanpa terlebih dahulu menghasilkan produk kartesian yang besar.
Kesimpulan
Semasa silang bercantum dengan WHERE klausa boleh mencapai hasil yang serupa dengan cantuman dalaman, cantuman dalaman umumnya memberikan prestasi yang lebih baik. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa garis panduan prestasi vendor tertentu mungkin memberi kesan kepada pilihan optimum untuk menyertai dalam situasi yang berbeza.
Atas ialah kandungan terperinci Silang Sertai dengan WHERE lwn. Inner Join: SQL Join Mana yang Menawarkan Prestasi Lebih Baik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!