SQL Server 数据操作与优化指南
1. TOP 和 OFFSET - FETCH 的使用与优化
在 SQL 查询中,TOP 和 OFFSET - FETCH 是非常实用的过滤器。下面是一个使用 OFFSET - FETCH 和 APPLY 来计算中位数的示例代码:
WITH C AS
(
SELECT grp,
COUNT(*) AS cnt,
(COUNT(*) - 1) / 2 AS ov,
2 - COUNT(*) % 2 AS fv
FROM dbo.T1
GROUP BY grp
)
SELECT grp, AVG(1. * val) AS median
FROM C
CROSS APPLY ( SELECT O.val
FROM dbo.T1 AS O
where O.grp = C.grp
order by O.val
OFFSET C.ov ROWS FETCH NEXT C.fv ROWS ONLY ) AS A
GROUP BY grp;
这个解决方案的执行计划具有以下优势:
- 高效并行处理 :能够高效地利用并行性,提升查询性能。
- 索引扫描次数减少 :索引总共只需要扫描 1.5 次,而不是 2 次。由于数据分组密集,查找成本可以忽略不计。
- 无合并连接 :执行计划中
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



