2010-08-19 150 views
0

當我在下面的查詢中使用左邊的外部連接時,查詢無限地執行而不給出結果集。然而 - 單獨他們工作正常,如果我將其從左外連接更改爲內連接。但我需要下面的interregen表中的所有值。mysql-orderby和左外部連接問題

不理解什麼可能是錯誤:(

我的MySQL查詢:

SELECT r.name, 
      r.network, 
      r.namestring, 
      i.name, 
      i.description, 
      r.rid, 
      i.id, 
      d.dtime, 
      d.ifInOctets, 
      d.ifOutOctets, 
      FROM_UNIXTIME(d.dtime) 
    FROM range AS r 
    JOIN interregen AS i ON r.rid = i.rid 
LEFT JOIN 1278993600_1_60 AS d ON i.id = d.id -- i.id is the primary key 
           AND dtime BETWEEN 1279026000 AND 1279040400 
    WHERE r.net = 'ITPN' 
     AND i.status = 'active' 
ORDER BY i.id, d.dtime 

請幫助! 感謝

+0

您能否更新輸出:「DESC range」,「DESC interrgen」和「DESC 1278993600_1_60」?另外,每個表的'SELECT COUNT(*)FROM'的結果是什麼? – 2010-08-19 16:26:08

回答

2

這是可能的,你的問題是,有一個很你的interregen表中有大量的行沒有表1278993600_1_60中的匹配條目,所以左外連接的問題是查詢試圖獲得比內連接更大的結果集,可能是我最終返回,但取決於行數,可能需要一段時間。

再看看查詢,如果你移動這個你也許能夠提高性能:

AND dtime BETWEEN 1279026000 AND 1279040400 

到某處凡在。

+0

有沒有更好的選擇,你可以建議?我等了20分鐘,沒有結果:(編輯了 – JJunior 2010-08-19 16:04:26

+0

,有關更改查詢的信息 - 可能有幫助,但不確定。 – Russ 2010-08-19 16:10:21