当我在下面的查询中使用带有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
请帮忙!! 感谢
答案 0 :(得分:2)
您的问题可能是您的interregen表中有非常多的行没有表1278993600_1_60中的匹配条目。所以左外连接的问题是查询试图获得比内连接更大的结果集。它最终可能会返回,但根据行数,可能需要一段时间。
再看一下查询,如果你移动它,你可能会提高性能:
AND dtime BETWEEN 1279026000 AND 1279040400
到了WHERE之后的某个地方。