第一次来这里。
我对加入表格时的最佳实践有疑问。例如,以下两个查询都返回相同的结果:
SELECT i.id, p.first_name, p.last_name
FROM individuals i, profiles p
WHERE i.id = p.individual_id;
SELECT i.id, p.first_name, p.last_name
FROM individuals i INNER JOIN profiles p ON i.id = p.individual_id;
Run Code Online (Sandbox Code Playgroud)
这两种方法的优缺点是什么?请让我知道你的想法。我对性能差异感兴趣,但也对查询的可读性、从一个 RDMS 到另一个 RDMS 的可移植性感兴趣,等等。
谢谢!
两个查询完全相同,应该返回完全相同的结果集并且应该产生完全相同的执行计划。
但是第二个查询使用的是ANSI-92 SQL
syntax 。第一个是使用较旧(非常旧)版本的 SQL 联接。
我可以想到一些您应该使用 ANSI-92 SQL 语法的原因。
Join Conditions
过滤器和实际过滤器分开WHERE
。INNER
和CROSS
连接的等效项。除了复杂的UNION
查询,外连接是不可能的。一些 DBMS 已经(+)
在 Oracle*=
和=*
SQL Server 中为外连接添加了专有语法,但这些正在或已经被弃用。标准中添加了显式连接和外连接LEFT
,RIGHT
并且FULL
几乎所有 DBMS 都采用了这些连接。CROSS JOIN
,根据我的经验,这是旧方法最糟糕的缺点之一。 归档时间: |
|
查看次数: |
2340 次 |
最近记录: |