内容简介
在Transact-SQL中使用窗口函数,可以针对许多问题进行查询的优化,以获得简单的解决方案。《T-SQL性能调优秘笈——基于SQL Server 2012窗口函数》基于SQL Server 2012,讨论了SQL窗口、窗口函数、排序集合函数、窗口函数的优化以及利用窗口函数的T-SQL解决方案等内容。
通过阅读本书,你将学到如何使用灵活、清晰、的方法对一个集合中的多条记录进行计算。无论你是数据库管理员,还是数据库开发人员、数据分析人员等,《T-SQL性能调优秘笈——基于SQL Server 2012窗口函数》都可以作为你的实践指导,帮助你掌握如何使用一系列T-SQL查询方案来解决常见的业务问题。
目录
目 录
第1章 SQL窗口函数 1
1.1 窗口函数的背景 2
1.1.1 窗口函数的描述 2
1.1.2 基于集合与基于迭代/游标的编程 6
1.1.3 窗口函数替代方案的不足之处 11
1.2 使用窗口函数的解决方案简介 16
1.3 窗口函数中的元素 20
1.3.1 分区 21
1.3.2 排序 22
1.3.3 框架 23
1.4 支持窗口函数的查询元素 24
1.4.1 查询逻辑处理 24
1.4.2 支持窗口函数的子句 26
1.4.3 避开限制 29
1.5 潜在的额外筛选器 31
1.6 窗口定义的重复使用 32
1.7 小结 33
第2章 窗口函数详述 34
2.1 窗口聚合函数 34
2.1.1 窗口聚合函数描述 34
2.1.2 支持的窗口元素 35
2.1.3 对进一步筛选的一些想法 51
2.1.4 DISTINCT聚合 53
2.1.5 嵌套聚合 55
2.2 排名函数 60
2.2.1 支持的窗口元素 60
2.2.2 ROW_NUMBER 60
2.2.3 NTILE 65
2.2.4 RANK和DENSE_RANK 69
2.3 分布函数 71
2.3.1 支持的窗口元素 71
2.3.2 排名分布函数 71
2.3.3 逆分布函数 74
2.4 偏移函数 77
2.4.1 支持的窗口元素 77
2.4.2 LAG和LEAD 78
2.4.3 FIRST_VALUE、LAST_VALUE和NTH_VALUE 80
2.5 小结 83
第3章 排序集合函数 84
3.1 假设集合函数 85
3.1.1 RANK 85
3.1.2 DENSE_RANK 87
3.1.3 PERCENT_RANK 88
3.1.4 CUME_DIST 89
3.1.5 通用的解决方法 90
3.2 逆分布函数 93
3.3 偏移函数 97
3.4 字符串连接 102
3.5 小结 103
第4章 窗口函数的优化 104
4.1 样本数据 104
4.2 索引指南 106
4.2.1 POC索引 107
4.2.2 反向扫描 108
4.2.3 列存储索引 111
4.3 排名函数 112
4.3.1 ROW_NUMBER 112
4.3.2 NTILE 114
4.3.3 RANK和DENSE_RANK 115
4.4 利用APPLY提高并行度 116
4.5 聚合和偏移函数 119
4.5.1 没有排序和框架 119
4.5.2 有排序和框架 122
4.6 分布函数 133
4.6.1 排名分布函数 133
4.6.2 逆分布函数 134
4.7 小结 137
第5章 利用窗口函数的T-SQL解决方案 138
5.1 虚拟数字辅助表 138
5.2 日期和时间值序列 142
5.3 序列键 143
5.3.1 更新列的值为值 143
5.3.2 数字序列的应用 145
5.4 分页 148
5.5 删除重复 151
5.6 数据透视 154
5.7 每组前N行 157
5.8 模式 160
5.9 统计总和 164
5.9.1 利用窗口函数的基于集合的解决方案 167
5.9.2 利用子查询或联接且基于集合的解决方案 168
5.9.3 基于游标的解决方案 169
5.9.4 基于CLR的解决方案 171
5.9.5 嵌套迭代 173
5.9.6 带变量的多行UPDATE 174
5.9.7 性能基准 176
5.10 并发间隔 178
5.10.1 传统的基于集合的解决方案 180
5.10.2 基于游标的解决方案 182
5.10.3 基于窗口函数的解决方案 185
5.10.4 性能基准 187
5.11 包装间隔 188
5.11.1 传统的基于集合的解决方案 191
5.11.2 基于窗口函数的解决方案 192
5.12 数据差距和数据岛 201
5.12.1 数据差距 202
5.12.2 数据岛 204
5.12.3 中位数 210
5.13 条件聚合 213
5.14 层次结构排序 215
5.15 小结 219