簡體   English   中英

內部聯接與左聯接-相同結果更快嗎?

[英]inner join vs left join - which is faster for the same result?

如果內部聯接和左聯接都能達到相同的結果,那么哪一個速度更快並且具有更好的性能(尤其是在大數據上)?

內部聯接:

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

Table_B:

PK_B    Message
1   TROT
2   CAR
3   CAB
6   MONUMENT
7   PC
8   MICROSOFT
9   APPLE
11  SCOTCH

有任何想法嗎? 如何測試它們在大數據上的性能?

通過添加WHERE A.PK_A = B.PK_B ,查詢優化器足夠聰明,可以理解您想要一個inner join WHERE A.PK_A = B.PK_B並改為使用inner join WHERE A.PK_A = B.PK_B 因此,由於將創建相同的執行計划,因此它們將具有相同的性能。

在此處輸入圖片說明 因此where當您要進行inner join切勿在鍵上的where使用left join ,這對於維護和理解將是令人沮喪的。

左聯接和內聯接解決了不同的目的。 您可以通過執行執行計划來檢查查詢的性能。 它將告訴所有查詢正在使用什么索引,正在掃描多少行等。在供應商的網站上,有一個很好的教程可用於相同的對象。

首先,內部聯接和左聯接不相同。 INNER JOIN獲取兩個表之間共有的所有記錄

LEFT JOIN從LEFT鏈接表中獲取所有記錄,但是如果您從RIGHT表中選擇了一些列,則如果沒有相關記錄,則這些列將包含NULL。

因此,顯然在性能方面,內部聯接更快。 希望它能對您有所幫助:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM