两个 SQL 双联接中性能最高的

Most performant of Two SQL Double joins

我有两个使用相同复合键的表,我想用左连接来连接它们。我的第一个查询是否是执行此操作的正确方法,或者像我的第二个示例中那样第二次加入 B 是 better/more 性能?我还应该提到这些表存在于数据库的相对侧 link,所以我认为连接越少越好...

Table答:

key1 | key2 | field
--------------------
1    | 1    | frog
1    | 2    | fish
3    | 2    | erik

Table乙:

key1 | key2 | otherField
---------------------------
1    | 1    | "three times"
1    | 3    | "rarely"
2    | 2    | "once"

期望的结果:

key1 | key2 | field | otherField
---------------------------------
1    | 1    | frog  | "three times"
1    | 2    | fish  | null
3    | 2    | erik  | null

方法一:

select * 
from A
left join B on (A.key1 = B.key1)
where (B.key2 = A.key2 or (B.key1 is null and B.key2 is null));

方法二:

select *
from A
left join B b1 on (A.key1 = b1.key1)
left join B b2 on (A.key2 = b2.key2)

只需在两个键上左连接:

SELECT A.key1, A.key2, A.field, B.otherfield
FROM A LEFT JOIN B 
  ON (A.key1 = B.key1) 
 AND (A.key2 = B.key2);