Dalam pertanyaan SQL/MySQL, adakah gabungan dipisahkan koma kurang cekap daripada gabungan kata kunci?
Apabila menulis pertanyaan pangkalan data, anda sering menghadapi sintaks yang menggunakan koma untuk memisahkan gabungan tanpa menggunakan kata kunci JOIN. Walaupun kaedah ini kelihatan serupa dengan INNER JOIN, ia mungkin menjejaskan kecekapan. Artikel ini meneroka sebab menggunakan kata kunci JOIN dan kesannya terhadap prestasi pertanyaan.
Sambungan koma dan sambungan kata kunci
Secara tradisinya, penyertaan dalam SQL/MySQL boleh dicapai dengan menyenaraikan jadual menggunakan koma (,) dan kemudian menapis menggunakan klausa WHERE. Kaedah ini dipanggil "penggabungan koma":
<code class="language-sql">SELECT a.someRow, b.someRow FROM tableA AS a, tableB AS b WHERE a.ID=b.ID AND b.ID= $someVar</code>
Walau bagaimanapun, pengenalan kata kunci JOIN menyediakan sintaks khusus untuk mentakrifkan gabungan secara eksplisit:
<code class="language-sql">SELECT * FROM people p JOIN companies c ON p.companyID = c.id WHERE p.firstName = 'Daniel'</code>
Perbezaan Prestasi
Walaupun penggabungan koma secara teknikal menyelesaikan tugas yang sama seperti penggabungan kata kunci, perbezaan prestasi mungkin berlaku dalam keadaan tertentu. Khususnya, menggunakan klausa WHERE dalam cantuman koma untuk penapisan tanpa kekangan boleh membawa kepada ketidakcekapan.
Sebagai contoh, pertimbangkan gabungan koma berikut:
<code class="language-sql">SELECT * FROM people p, companies c WHERE p.companyID = c.id AND p.firstName = 'Daniel'</code>
Kebanyakan pangkalan data akan mentafsir pertanyaan ini sebagai pertama kali melaksanakan produk Cartesian bagi jadual orang dan syarikat. Kemudian, gunakan klausa WHERE untuk mengenal pasti rekod yang sepadan. Pendekatan ini melibatkan overhed yang ketara kerana produk Cartesian boleh menghasilkan set data yang besar.
Kelebihan pemautan kata kunci
Menggunakan kata kunci JOIN mempunyai kelebihan berikut:
Cadangan
Berdasarkan pertimbangan prestasi dan kelebihan gabungan kata kunci, adalah disyorkan untuk menggunakan kata kunci JOIN dalam semua pertanyaan. Walaupun pertanyaan sambung koma sedia ada mungkin tidak memerlukan pengubahsuaian segera, sintaks kata kunci disyorkan untuk mematuhi piawaian moden dan meningkatkan kualiti kod.
Atas ialah kandungan terperinci Adakah Gabungan Dipisahkan Koma dalam Pertanyaan SQL/MySQL Kurang Cekap Daripada Gabungan Kata Kunci?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!