gpt4 book ai didi

sql - ON 条件是否限制了加入的选择所做的工作量?

转载 作者:行者123 更新时间:2023-12-04 21:20:15 25 4
gpt4 key购买 nike

我使用 Microsoft SQL Server,但我想这个问题适用于所有 SQL 语言。如果我有:

SELECT OrderHeaderID
,isNull(Qty,0) AS Qty
FROM OrderHeader
LEFT JOIN (
SELECT OrderHeaderID
,Sum(Qty) AS Qty
FROM OrderDetail
GROUP BY OrderHeaderID
) OrderDetail
ON OrderDetail.OrderHeaderID = OrderHeader.OrderHeaderID
WHERE Criteria = 'X'

然后是否会在应用条件之前对所有 OrderDetail 行执行 GROUP BY?换句话说,我是否应该注意将条件应用于 GROUP BY 以及外部 SELECT?

顺便说一句,如果您发现这行代码有任何改进,请也发表评论。

最佳答案

关于您的第一个问题,很难说出优化器在编译查询时发现了什么。我认为您的内部聚合首先执行。

关于你的第二个问题,这两种选择可能更容易理解

SELECT OrderHeader.OrderHeaderID
,isNull(Sum(OrderDetail.Qty),0) AS Qty
FROM OrderHeader
LEFT JOIN OrderDetail
ON OrderDetail.OrderHeaderID = OrderHeader.OrderHeaderID
WHERE OrderHeader.Criteria = 'X'
GROUP BY OrderHeader.OrderHeaderID

select OrderHeaderId,
IsNull(
(Select sum(qty) from OrderDetails d
where d.OrderHeaderId = OrderHeader.OrderHeaderId)
,0) as qty
from OrderHeader
where Criteria='X'

关于sql - ON 条件是否限制了加入的选择所做的工作量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14094054/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com