查不出来:
SELECT e.id,e.ename,COUNT(s.id) AS total FROM enterprise e LEFT JOIN comm_port p ON e.id = p.eid LEFT JOIN sendedoutbox s ON p.port = s.CommPort WHERE s.SendTime BETWEEN '2013-08-09 15:31:35' AND '2013-08-28 10:47:28' GROUP BY p.eid ORDER BY total DESC
正确能查出来:
SELECT e.id,e.ename,COUNT(s.id) AS total FROM enterprise e LEFT JOIN comm_port p ON e.id = p.eid LEFT JOIN (SELECT * FROM sendedoutbox s WHERE s.SendTime BETWEEN '2013-08-09 15:31:35' AND '2013-08-28 10:47:28') s ON p.port = s.CommPort GROUP BY p.eid ORDER BY total DESC
SELECT e.id,e.ename,COUNT(s.id) AS total FROM enterprise e LEFT JOIN comm_port p ON e.id = p.eid LEFT JOIN sendedoutbox s ON p.port = s.CommPort WHERE s.SendTime BETWEEN '2013-08-09 15:31:35' AND '2013-08-28 10:47:28' GROUP BY p.eid ORDER BY total DESC
正确能查出来:
SELECT e.id,e.ename,COUNT(s.id) AS total FROM enterprise e LEFT JOIN comm_port p ON e.id = p.eid LEFT JOIN (SELECT * FROM sendedoutbox s WHERE s.SendTime BETWEEN '2013-08-09 15:31:35' AND '2013-08-28 10:47:28') s ON p.port = s.CommPort GROUP BY p.eid ORDER BY total DESC
本文介绍了一个具体的SQL查询优化案例,对比了两种不同的查询方式:一种因时间范围过滤不当导致查询效率低下;另一种通过子查询先筛选时间范围内的记录再进行联接操作,显著提升了查询性能。
1530

被折叠的 条评论
为什么被折叠?



