如果内连接和左连接都可以实现相同的结果,哪一个更快并且具有更好的性能(特别是对于大数据)?
内部联接:
SELECT *
FROM Table_A A
INNER JOIN Table_B B
ON A.PK_A = B.PK_B
左连接:
SELECT *
FROM Table_A A
LEFT JOIN Table_B B
ON A.PK_A = B.PK_B
WHERE A.PK_A = B.PK_B
表A:
PK_A User
1 FOX
2 COP
3 TAXI
6 WASHINGTON
7 DELL
5 ARIZONA
4 LINCOLN
10 LUCENT
表-B:
PK_B Message
1 TROT
2 CAR
3 CAB
6 MONUMENT
7 PC
8 MICROSOFT
9 APPLE
11 SCOTCH
有什么想法吗?如何测试他们在大数据上的表现?
答案 0 :(得分:9)
通过添加WHERE A.PK_A = B.PK_B
,查询优化器非常智能,可以理解您想要inner join
并使用它。
因此,它们将具有相同的性能,因为将创建相同的执行计划。
因此,从不在您需要left join
时在密钥上使用where
inner join
,维护和理解就会令人沮丧。
答案 1 :(得分:2)
左连接和内连接解决了不同的目的。 您可以通过执行执行计划来检查查询的性能。它将告诉所有索引查询使用的内容,扫描的行数等。 在供应商的网站上有相同的非常好的教程。
答案 2 :(得分:1)
首先,内连接和左连接不相同。 INNER JOIN 获取两个表之间通用的所有记录
LEFT JOIN 从LEFT链接表中获取所有记录,但如果您从RIGHT表中选择了一些列,如果没有相关记录,则这些列将包含NULL。
因此,在性能方面,内部加入更快。 希望它能帮助你:))