我最近阅读了很多关于CROSS APPLY
vs 的文章INNER JOIN
。我尝试编写一些查询,它们都以类似的方式工作,执行计划似乎也相同。
也许有更深入知识的人可以向我解释这两者之间的区别?
OUTER APPLY (SELECT UserID
, ActionPerformedDate = MAX(ActionDate)
FROM dbo.AdminUsage
WHERE SubscriberID = S.SubscriberID
AND ActionPerformed = 'Some Action'
AND Description = 'True'
GROUP BY UserID) AS AU
LEFT JOIN (SELECT SubscriberID
, UserID
, MAX(ActionDate) OVER(PARTITION BY SubscriberID) AS ActionPerformedDate
FROM dbo.AdminUsage
WHERE ActionPerformed = 'Some Action'
AND Description = 'True') AS AU
ON AU.SubscriberID = S.SubscriberID
Run Code Online (Sandbox Code Playgroud)
在这种情况下是否有首选方法?