2010-08-19 157 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