2012-07-26 126 views
0

我想加入Account AND Sales表格。加入表格時的性能差異

Account表的主鍵:id,YearCode,AgentId

哪個查詢更快的運行

查詢#1:

SELECT * 
FROM account A 
    JOIN sales s on a.id = s.id 
        AND a.yearcode = s.yearcode 
        AND a.agentid = s.agentid 
WHERE a.yearcode = 1 
     AND a.agentid=56 
     AND a.id=976 

查詢#2:

SELECT * 
FROM Account A 
    JOIN sales s on a.id=s.id 
WHERE s.yearcode=1 
     AND s.agentid=56 
     AND a.yearcode=1 
     AND a.agentid=56 
     AND a.id=976 

查詢#3 :

​​
+6

查詢#1是一個最**最符合標準的**,因此我會用那一個。我認爲你們不會看到三者之間有明顯的性能差異。但你最好的選擇是:**自己嘗試並測量!** – 2012-07-26 11:27:47

+0

查詢#2,因爲你在這裏輸入的是**無效的語法**('where和....') – 2012-07-26 11:29:36

+0

當然'select * '通常會被忽視,因爲對錶格的更改會突然讓您的查詢具有不同數量的列,並且不會很好地處理名稱衝突。 – 2012-07-26 11:29:57

回答

0

試試這個:

SELECT * 
FROM account A 
JOIN sales s on a.id = s.id AND a.yearcode = s.yearcode AND a.agentid = s.agentid 
WHERE a.id =976 AND a.yearcode = 1 AND a.agentid=56 
+0

您能解釋一下爲什麼選擇這個嗎? – 2012-07-26 13:37:57

+0

它始終是將索引放置在where子句中的最佳實踐。 – AnandPhadke 2012-07-26 17:32:50