Perbandingan kaedah SQL JOIN: USING, ON and WHERE
SQL menyediakan tiga sintaks untuk melaksanakan operasi JOIN: USING, ON dan WHERE. Walaupun sintaks ini kelihatan serupa, ia boleh menjejaskan kebolehbacaan pertanyaan, ketepatan dan prestasi.
GUNAKAN sintaks
SintaksUSING menggunakan kata kunci USING
diikuti dengan nama lajur yang biasa kepada kedua-dua jadual untuk menentukan lajur gabungan:
<code class="language-sql">SELECT * FROM a JOIN b USING(ID);</code>
HIDUP sintaks
SintaksON menggunakan kata kunci ON
dan ungkapan kesamaan antara lajur yang dicantumkan untuk mentakrifkan syarat-syarat penyertaan secara eksplisit:
<code class="language-sql">SELECT * FROM a JOIN b ON a.ID = b.ID;</code>
WHERE sintaks
Sintaks WHERE menggabungkan syarat cantuman dan penapis dalam klausa WHERE:
<code class="language-sql">SELECT * FROM a, b WHERE a.ID = b.ID;</code>
Pertimbangan prestasi
Tiada perbezaan prestasi yang ketara antara pilihan sintaks ini. Walau bagaimanapun, disebabkan kemungkinan kekaburan, terutamanya dengan pertanyaan yang melibatkan OUTER JOIN, sintaks WHERE tidak disyorkan.
Perbezaan semantik
SintaksUSING secara eksplisit menyatakan hanya lajur gabungan, yang memberikan kejelasan dan mengurangkan risiko syarat gabungan yang salah.
SintaksON membenarkan syarat gabungan yang lebih kompleks, termasuk pengendali ketidaksamaan (=, !=, >) atau syarat gabungan tambahan (mis., DAN/ATAU).
Sintaks WHERE secara tersirat melaksanakan INNER JOIN berdasarkan kesamaan lajur yang ditentukan. Ini boleh membawa kepada produk Cartesian yang tidak dijangka atau hasil yang salah untuk sambungan luar.
Contoh penerangan
Pertimbangkan pertanyaan berikut:
<code class="language-sql">FROM T1,T2,T3 WHERE T1.ID = T2.ID AND T1.foo = 'bar' AND T2.fish = 42</code>
Tidak jelas sama ada T1.foo = 'bar' ialah syarat cantum atau syarat penapis.
Menulis semula pertanyaan menggunakan sintaks ON boleh memberikan kejelasan:
<code class="language-sql">FROM T1 INNER JOIN T2 ON T1.ID = T2.ID WHERE T1.foo = 'bar' AND T2.fish = 42</code>
Kesimpulan
Walaupun pilihan sintaks USING, ON, dan WHERE semuanya boleh mencapai operasi JOIN, sintaks ON biasanya lebih disukai kerana kebolehbacaan, ketepatan dan ketekalannya yang lebih baik dalam mengendalikan cantuman luar. Sintaks USING memberikan kesederhanaan, manakala sintaks WHERE harus dielakkan kerana potensi kekaburannya.
Atas ialah kandungan terperinci SQL JOINs: USING, ON, or WHERE – Sintaks Mana Yang Perlu Anda Pilih?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!