我在 MS SQL Server 上运行了类似于以下内容的 SQL:
SELECT
CustNum,
Name,
FROM
Cust
LEFT JOIN (
SELECT
CustNum, MAX(OrderDate) as LastOrderDate
FROM
Orders
GROUP BY
CustNum) as Orders
ON Orders.CustNum = Cust.CustNum
WHERE
Region = 1
它包含一个子查询,用于从子表中查找 MAX 记录。问题是这些表有大量的行。似乎子查询将对子表的所有行进行操作,即使由于外部查询上的 WHERE 子句实际上只需要其中的少数
有没有办法缩小内部查询的范围?像添加 WHERE 子句以仅包含外部查询中包含的记录之类的东西?就像是
WHERE CustomerOrders.CustomerNumber = Customers.CustomerNumber -- Customers from the outer query.
我怀疑这不是必需的,但我从另一个开发人员那里得到了一些回击,我想确定(我的 SQL 有点生疏)。