Kaedah SQL JOIN: prestasi dan perbezaan sintaks USING, ON dan WHERE
SQL menyediakan beberapa pilihan untuk menyertai jadual: USING, ON dan WHERE. Walaupun kefungsian pilihan ini adalah serupa, salah faham tentang prestasi dan makna sintaksisnya mungkin timbul. Artikel ini meneroka perbezaan antara kaedah sambungan ini.
Prestasi
Bertentangan dengan kepercayaan popular, tiada perbezaan prestasi yang ketara antara tiga kaedah sambungan. Ketiga-tiga kaedah menghasilkan pelan pertanyaan yang dioptimumkan yang sama.
Sintaksis dan semantik
Sintaks ANSI:
GUNAKAN sintaks:
Kekaburan "menyertai di mana" (tersirat JOIN DALAM)
Menggunakan klausa WHERE untuk menentukan syarat cantuman boleh membawa kepada kesamaran, terutamanya dalam jenis cantuman luar. Masalahnya berpunca daripada susunan pemprosesan pertanyaan logik dalam SQL Server, di mana FROM dinilai sebelum WHERE. "join the where" mungkin secara tidak sengaja mencipta produk Cartesian atau menghasilkan hasil yang tidak dijangka.
Kekaburan tatabahasa:
Dua pertanyaan berikut menggambarkan kekaburan sintaks yang boleh timbul apabila mencampurkan cantuman dalam tersirat dalam klausa WHERE dengan cantuman luar eksplisit dalam klausa FROM:
<code class="language-sql">FROM T1, T2, T3 WHERE T1.ID = T2.ID AND T1.foo = 'bar' AND T2.fish = 42 FROM T1 INNER JOIN T2 ON T1.ID = T2.ID INNER JOIN T3 ON T1.ID = T3.ID WHERE T1.foo = 'bar' AND T2.fish = 42</code>
Kekaburan timbul daripada ketidakupayaan untuk menentukan dengan jelas sambungan mana yang luaran dan yang mana dalaman.
Cadangan:
Untuk kejelasan, ketekalan dan keserasian dengan piawaian SQL moden, adalah disyorkan:
Atas ialah kandungan terperinci SQL Joins: Apakah Perbezaan Prestasi dan Sintaks Antara USING, ON, dan WHERE?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!