刚读了一篇文章,sql语句的解析过程:http://www.cnblogs.com/myprogram/archive/2013/01/24/2874666.html
两张表数据行若很大,笛卡尔积数量是非常庞大的,如何降低呢?
查询sql形如:
SELECT C.customerid, COUNT(O.orderid) AS numorders
FROM dbo.Customers AS C
LEFT OUTER JOIN dbo.Orders AS O
ON C.customerid = O.customerid
WHERE C.city = 'Madrid'
GROUP BY C.customerid
HAVING COUNT(O.orderid) < 3
ORDER BY numorders desc
降低笛卡尔积数量:
SELECT C.customerid, COUNT(O.orderid) AS numorders
FROM (select * from dbo.Customers WHERE city = 'Madrid')
AS C
LEFT OUTER JOIN dbo.Orders AS O
ON C.customerid = O.customerid
GROUP BY C.customerid
HAVING COUNT(O.orderid) <
3
ORDER BY numorders desc
未测试....