Cross Join vs Inner Join dengan WHERE Klausa: Perbandingan Prestasi
Berbeza dengan cantuman dalam, cantuman silang mengembalikan semua kombinasi baris yang mungkin merentas berbilang jadual tanpa mewujudkan sebarang hubungan. Ini boleh menghasilkan bilangan baris yang ketara, terutamanya untuk jadual besar.
Pertimbangkan contoh konkrit berikut:
SELECT User.* FROM User, Address WHERE User.addressId = Address.id;
Cambung silang ini, bersamaan dengan cantuman dalam dengan klausa WHERE, menghasilkan semua gabungan baris daripada jadual Pengguna dan Alamat.
SELECT User.* FROM User INNER JOIN Address ON (User.addressId = Address.id);
Sebaliknya, sambung dalam menapis keputusan berdasarkan syarat cantuman, menghasilkan set baris yang lebih kecil yang nilainya sepadan.
Bertentangan dengan kepercayaan popular, pengoptimuman tidak menukar cantuman silang kepada cantuman dalam secara automatik. Walaupun prestasi mungkin tidak bertambah baik dengan ketara selepas bertukar kepada cantuman dalaman, ini bukan disebabkan oleh pengoptimuman tetapi sebaliknya ciri pertanyaan khusus dan gelagat DBMS.
Cambungan silang selalunya menghasilkan lebih banyak baris daripada cantuman dalam, memakan lebih banyak memori dan pemprosesan sumber. Oleh itu, cantuman dalam biasanya diutamakan untuk pertimbangan prestasi.
Faktor yang perlu dipertimbangkan semasa memilih antara cantuman silang dan cantuman dalam termasuk kerumitan pertanyaan, saiz jadual dan output yang diingini. Jika penapisan data diperlukan, gabungan dalaman menawarkan cara yang lebih cekap dan tepat untuk mendapatkan hasil yang diingini.
Atas ialah kandungan terperinci Cross Join vs. Inner Join with WHERE Klausa: Mana Berprestasi Lebih Baik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!