2015-12-25 80 views
2

JOIN條件順序會影響性能嗎?我有兩個表A和B.我想加入他們這樣的:SQL連接條件順序執行

SELECT * FROM A 
INNER JOIN B on B.ID_A = A.ID 

在這種情況下火鳥使用NATURAL計劃,而不是使用外鍵。

SELECT * FROM A 
INNER JOIN B on A.ID = B.ID_A 

工作良好。

這是正常的嗎?

+0

不影響內連接,但使用左連接和右連接會影響性能。 –

+0

您使用哪種Firebird版本?我從來沒有見過Firebird這樣的問題,所以也許它只是其中一個版本中的錯誤... –

+0

@MaximVotyakov我正在使用Firebird 2.5 –

回答

0

我對firebird不熟悉,但通常對於內部連接並不重要。 而在新版本的Oracle或SQLServer或MySQL或Postgresql中,它不會影響性能。我們已經解釋了檢查數據庫的計劃,選擇正確的加入方式可以嘗試它。

0

這個查詢是確定的,但要確保B.ID_A是指數(用於快速性能)

不要在SQL查詢中使用*,只使用需要的列...

你的問題是關於性能,所以我想,你有非常大的數據.. 所以必須使用LIMIT您查詢......

SELECT A.ID, A.column1, B.column2, FROM A 
INNER JOIN B on B.ID_A = A.ID LIMIT 0,100 
+0

我只是寫了'*'例如。據我所知,Firebird會自動爲外鍵創建一個索引。但它在第一種情況下不使用此索引。 –