内连接与左连接 - 对于相同的结果更快?

时间:2017-02-17 12:32:04

标签: mysql sql join left-join inner-join

如果内连接和左连接都可以实现相同的结果,哪一个更快并且具有更好的性能(特别是对于大数据)?

内部联接:

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

有什么想法吗?如何测试他们在大数据上的表现?

3 个答案:

答案 0 :(得分:9)

通过添加WHERE A.PK_A = B.PK_B,查询优化器非常智能,可以理解您想要inner join并使用它。 因此,它们将具有相同的性能,因为将创建相同的执行计划。

enter image description here 因此,从不在您需要left join时在密钥上使用where inner join,维护和理解就会令人沮丧。

答案 1 :(得分:2)

左连接和内连接解决了不同的目的。 您可以通过执行执行计划来检查查询的性能。它将告诉所有索引查询使用的内容,扫描的行数等。 在供应商的网站上有相同的非常好的教程。

答案 2 :(得分:1)

首先,内连接和左连接不相同。 INNER JOIN 获取两个表之间通用的所有记录

LEFT JOIN 从LEFT链接表中获取所有记录,但如果您从RIGHT表中选择了一些列,如果没有相关记录,则这些列将包含NULL。

因此,在性能方面,内部加入更快。 希望它能帮助你:))