小编The*_*iot的帖子

与内联子查询相比,使用 Cross Apply 或 CTE 没有优势

我遇到了这样的查询:

SELECT (SELECT COUNT(1) FROM Orders o WHERE i.ItemId = o.ItemId) [C]
FROM Items i
Run Code Online (Sandbox Code Playgroud)

我将其更改为以下

;WITH cte_count
AS
(
    SELECT COUNT(1) c, OrderId FROM Orders Group By ItemId
)
SELECT a.c [Count], i.Name
FROM Items i
INNER JOIN cte_count c ON (c.ItemId = i.ItemId)
Run Code Online (Sandbox Code Playgroud)

但两者的执行计划如下所示:

CTE 和内联执行计划

同样,还有另一个查询选择TOP 1 Order By Id. 我尝试将这个移动到CROSS APPLY但是对于这个,我也得到了相同的执行计划。

交叉应用和内联执行计划

当然,查询中还有其他连接和列。

我的困境是关于使用CROSS APPLYand 的实用性和优势CTE。有没有或只是异国情调?

cte t-sql subquery cross-apply

8
推荐指数
1
解决办法
1万
查看次数

标签 统计

cross-apply ×1

cte ×1

subquery ×1

t-sql ×1