mysql - order by和left outer join问题

时间:2010-08-19 15:56:40

标签: sql database mysql

当我在下面的查询中使用带有order by的左外连接时,查询无限地执行而不给出结果集。但是 - 如果我将它从左外连接更改为内连接,它们可以单独工作。但我需要下面的interregen表中的所有值。

不理解可能出现的错误:(

我的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

请帮忙!! 感谢

1 个答案:

答案 0 :(得分:2)

您的问题可能是您的interregen表中有非常多的行没有表1278993600_1_60中的匹配条目。所以左外连接的问题是查询试图获得比内连接更大的结果集。它最终可能会返回,但根据行数,可能需要一段时间。

再看一下查询,如果你移动它,你可能会提高性能:

AND dtime BETWEEN 1279026000 AND  1279040400

到了WHERE之后的某个地方。