2012-12-17 94 views
1

我是遊蕩,如果有越來越多的下面的查詢的準確性任何方式的準確性,提高查詢

SELECT DISTINCT a.localgeo, a.foreigngeo, b.lat, b.lng, c.lat, c.lng FROM tbl_correlateddata a JOIN tbl_geodetail b ON a.localgeo = b.code JOIN tbl_geodetail c ON a.foreigngeo = c.code

我在做什麼這裏是我的訪問表2個國家代碼,像這樣,

localgeo|foreigngeo 
-------------------- 
JP  |AD 
JP  |AD 
US  |HK 
AD  |JP 
HK  |US 
AD  |JP 
CN  |US 

,並試圖填補它,像這樣另一個表機智經度和tatitude值,

code|lat|lng 
------------ 
JP |1 |2 
US |3 |3 
HK |1 |4 
AD |3 |4 
CN |4 |4 

的結果是這樣的運行查詢後,

localgeo|lat|lng|foreigngeo |lat|lng| 
------------------------------------ 
JP  |1 |2 |AD   |3 |4 
US  |3 |3 |HK   |1 |4 
HK  |1 |4 |US   |3 |3 
AD  |3 |4 |JP   |1 |2 
CN  |4 |4 |US   |3 |3 

但查詢時運行需要time..if的很多有什麼辦法可以加快這將是非常感謝..非常感謝你太多:)

回答

2

問題是,你使用不同的所有領域,你沒有使(),它需要很多時間。儘量只對一列

這樣

SELECT DISTINCT (a.localgeo), a.foreigngeo, b.lat, b.lng, c.lat, c.lng 
    FROM tbl_correlateddata a 
    JOIN tbl_geodetail b 
     ON a.localgeo = b.code 
    JOIN tbl_geodetail c 
     ON a.foreigngeo = c.code 

編輯使用不同:

 SELECT DISTINCT a,b,c FROM t 

大致等同於:

 SELECT a,b,c FROM t GROUP BY a,b,c 

所以你應該做這樣的

 SELECT a.localgeo, a.foreigngeo, b.lat, b.lng, c.lat, c.lng 
    FROM tbl_correlateddata a 
    JOIN tbl_geodetail b 
     ON a.localgeo = b.code 
    JOIN tbl_geodetail c 
     ON a.foreigngeo = c.code 
    GROUP BY a.localgeo ,a.foreigngeo 
+0

你好,謝謝你的回覆,但問題是我需要兩個列是distinct.as不能有重複組合在結果我得到..在DISTINCT(a.localgep,a.foreigngeo) '但這是不可能的..有一個解決方法來做到這一點? –

+1

看我的編輯,不要使用不同和使用你的專欄組至極至極你想成爲截然不同的 –

+0

ohh yess ...多數民衆贊成的事情......'集團BY'很好地:)非常感謝你 –