SQL JOIN methods: performance and syntax differences of USING, ON and WHERE
SQL provides several options for joining tables: USING, ON and WHERE. Although the functionality of these options is similar, misunderstandings about their performance and syntactic meaning may arise. This article explores the differences between these connection methods.
Performance
Contrary to popular belief, there are no significant performance differences between the three connection methods. All three methods produce the same optimized query plan.
Syntax and semantics
ANSI syntax:
USING syntax:
Ambiguity of “join the where” (implicit INNER JOIN)
Using a WHERE clause to specify join conditions can lead to ambiguity, especially in outer join types. The problem stems from the logical query processing order in SQL Server, where FROM is evaluated before WHERE. "join the where" may inadvertently create a Cartesian product or produce unexpected results.
Grammatical ambiguity:
The following two queries illustrate the syntax ambiguities that can arise when mixing implicit inner joins in the WHERE clause with explicit outer joins in the FROM clause:
<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>
The ambiguity arises from the inability to clearly determine which connections are external and which are internal.
Recommendation:
For clarity, consistency, and compatibility with modern SQL standards, it is recommended:
The above is the detailed content of SQL Joins: What are the Performance and Syntax Differences Between USING, ON, and WHERE?. For more information, please follow other related articles on the PHP Chinese website!