2010-08-19 7 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의 결과는 무엇입니까? –

답변

2

도와주세요 테이블 1278993600_1_60에 일치하는 항목이없는 interregen 테이블의 행 수가 너무 많습니다. 따라서 왼쪽 외부 조인의 문제점은 쿼리가 내부 조인보다 훨씬 더 큰 결과 집합을 얻으려는 것입니다. 결국 돌아 왔지만 행 수에 따라 다소 시간이 걸릴 수 있습니다.

쿼리에서 또 다른 모양과이 이동하는 경우에는 성능을 향상시킬 수 있습니다 다음 WHERE 후에 어딘가에

AND dtime BETWEEN 1279026000 AND 1279040400 

합니다.

+0

제안 할 수있는 더 나은 옵션이 있습니까 ??? 나는 결과가없는 20 분을 기다리고 있었다 : ( – JJunior

+0

는 쿼리를 약간 변경하는 것과 관련된 정보로 편집되었지만 확실하지는 않습니다. – Russ