T-SQL 中的分组、透视和窗口函数应用
1. 性能问题与优化方向
在某些查询中,部分函数的优化效率较低。例如下面这个查询:
-- 此处未给出原查询,推测相关查询可能类似下面的伪代码形式
SELECT ...
FROM ...
-- 可能存在需要优化的函数调用
其查询计划会有多次行数据的暂存,然后对暂存数据进行一次聚合计算和一次详细信息读取。后续可寻找更高效的替代方案。
2. 缺口与岛屿问题概述
缺口和岛屿问题是 T - SQL 中涉及值序列的经典问题。值的类型通常是日期和时间,有时也会是整数等其他类型。缺口问题是识别序列中缺失值的范围,而岛屿问题则是识别现有值的连续范围。例如,识别不活跃期和活跃期分别对应缺口和岛屿问题。很多缺口和岛屿问题可以使用窗口函数高效解决。
2.1 示例数据准备
使用以下代码创建并填充示例表 T1 :
SET NOCOUNT ON;
USE tempdb;
IF OBJECT_ID('dbo.T1', 'U') IS NOT NULL DROP TABLE dbo.T1;
CREATE TABLE dbo.T1(col1 INT NOT NULL CONSTRAINT PK_T1 PRIMARY KEY);
GO
INSERT INTO dbo.T1(col1) VALUES(1),(2),(3),(7),(8),(9),(11),(15),(16),(17),(28);
超级会员免费看
订阅专栏 解锁全文
1

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



