书刊介绍
《Oracle查询优化改写技巧与案例2.0》内容简介
《Oracle查询优化改写技巧与案例2.0》不讲具体语法,只是以案例的形式介绍各种查询语句的用法。第1-4章是基础部分,讲述了常用的各种基础语句,以及常见的错误和正确语句的写法,应熟练掌握这部分内容,因为在日常查询和优化改写中都要用到;第5-12章是提高部分,讲解了正则表达式、分析函数、树形查询及汇总函数的用法,这部分内容常用于一些复杂需求的实现及优化改写;最后两章介绍日常的优化改写案例,这部分内容是前面所学知识的扩展应用。
如果您是开发人员,经常与Oracle打交道,那么《Oracle查询优化改写技巧与案例2.0》可以帮助您处理复杂的需求,写出高性能的语句。如果您是运维人员,则本书可以帮助您更快地完成慢语句的改写优化。
师庆栋,网名有教无类。SWOUG(西南Oracle用户组)成员,资深Oracle开发DBA,道森培训高级讲师。拥有超过17年的IT从业经验,擅长Oracle数据库开发,对于数据库架构设计、性能优化拥有丰富的实战经验!通过大量的报表优化改写,积累了丰富的优化改写经验,擅长对Oracle查询语句的优化改写。
罗炳森,网名落落。擅长SQL优化,对Oracle优化器有较深的理解。从2007年至今一直专注于SQL优化、表设计优化、SQL查询改写。经常热心帮助网友解决SQL性能问题,累计SQL优化案例上千个。作品目录
内容简介
序1、序2、前
言
第1章:单表查询
1.1、查询表中所有的行与列
1.2、从表中检索部分行
1.3、查找空值
1.4、空值与运算
1.5、处理空值
1.6、空值与函数
1.7、查找满足多个条件的行
1.8、从表中检索部分列
1.9、为列取有意义的名称
1.10、在WHERE子句中引用取别名的列
1.11、拼接列
1.12、在SELECT语句中使用条件逻辑
1.13、限制返回的行数
第2章:给查询结果排序
2.1、以指定的次序返回查询结果
2.2、按多个字段排序
2.3、按子串排序
2.4、从表中随机返回n条记录
2.5、TRANSLATE
2.6、按数字和字母混合字符串中的字母排序
2.7、处理排序空值
2.8、根据条件取不同列中的值来排序
第3章:操作多个表
3.1、UNION
ALL与空字符串
3.2、UNION与OR
3.3、UNION与去重
3.4、组合相关的行
3.5、IN、EXISTS和INNER
JOIN
3.6、INNER
JOIN、LEFT
JOIN、RIGHT
JOIN和FULL
JOIN解析
3.7、外连接与过滤条件
3.8、自关联
3.9、NOT
IN、NOT
EXISTS和LEFT
JOIN
3.10、检测两个表中的数据及对应数据的条数是否相同
3.11、聚集与内连接
第4章:插入、更新与删除
4.1、插入新记录
4.2、阻止对某几列插入
4.3、复制表的定义及数据
4.4、用WITH
CHECK
OPTION限制数据录入
4.5、多表插入语句
4.6、用其他表中的值更新
4.7、合并记录
4.8、删除违反参照完整性的记录
4.9、删除名称重复的记录
第5章:使用字符串
5.1、生成连续数值
5.2、遍历字符串
5.3、计算字符在字符串中出现的次数
5.4、从字符串中删除不需要的字符
5.5、将字符和数字数据分离
5.6、查询只包含字母或数字型的数据
5.7、提取姓名的大写首字母缩写
5.8、根据表中的行创建一个分隔列表
5.9、提取第n个分隔的子串
5.10、分解IP地址
5.11、将分隔数据转换为多值IN列表
5.12、组合去重
第6章:使用数字
6.1、常用聚集函数
6.2、列转行
6.3、行转列
6.4、生成累计和
6.5、累计与重复值
6.6、生成排名
6.7、返回最值对应信息
6.8、求总和的百分比
第7章:日期运算
7.1、日期类型
7.2、日期计算
7.3、时间间隔类型
7.4、日期计算函数
7.5、间隔月份
7.6、获取记录间的间隔时间
第8章:日期操作
8.1、提取日期中的信息
8.2、提取间隔类型中的信息
8.3、周的计算
8.4、计算一年中周内各日期的次数
8.5、确定一年是否为闰年
8.6、创建本月日历
8.7、全年日历
8.8、补充范围内丢失的值
8.9、识别重叠的日期范围
第9章:范围处理
9.1、定位连续值的范围
9.2、合并连续区间
9.3、合并重叠区间
9.4、用WITH进行范围分组
第10章:高级查找
10.1、给结果集分页
10.2、使用管道函数把全表查询改为增量查询
10.3、内联视图与错误数据
10.4、正确使用分析函数
10.5、找到包含最大值和最小值的记录
10.6、提取维度信息
第11章:报表和数据仓库运算
11.1、行转列子句
11.2、列转行子句
11.3、将结果集反向转置为一列
11.4、打印小票与行列转换
11.5、数据分组
11.6、计算简单的小计
11.7、判别非小计的行
11.8、对不同组/分区同时实现聚集
11.9、移动范围取值分析
11.10、计算本期、新增、累加
11.11、listagg与小九九
第12章:分层查询
12.1、简单的树形查询
12.2、根节点、分支节点、叶子节点
12.3、sys_connect_by_path
12.4、树形查询中的排序
12.5、树形查询中的WHERE
12.6、查询树形的一个分支
12.7、剪去一个分支
12.8、多行字符串的拆分
第13章:应用案例实现
13.1、解析简单公式
13.2、匹配汉字
13.3、多表全外连接的问题
13.4、根据传入条件返回不同列中的数据
13.5、拆分字符串进行连接
13.6、用“行转列”来得到隐含信息
13.7、用隐藏数据进行行转列
13.8、用正则表达式提取clob里的文本格式记录集
第14章:改写调优案例分享
14.1、为什么不建议使用标量子查询
14.2、用LEFT
JOIN优化标量子查询
14.3、用LEFT
JOIN优化标量子查询之聚合改写
14.4、用LEFT
JOIN及行转列优化标量子查询
14.5、标量中有ROWNUM=1、14.6、ROWNUM=1引起的逻辑问题
14.7、标量中有不等关联时改写的问题
14.8、标量中有聚合函数时改写的问题
14.9、用分析函数优化标量子查询(一)
14.10、用分析函数优化标量子查询(二)
14.11、用分析函数优化标量子查询(三)
14.12、标量中的树形查询
14.13、使用标量子查询优化取最值语句
14.14、用MERGE改写优化UPDATE
14.15、UPDATE中有ROWNUM=1、14.16、用MERGE使用左联
14.17、用MERGE改写UPDATE之多个子查询
14.18、将UPDATE改写为MERGE时遇到的问题
14.19、通过分页方式优化最值语句
14.20、让分页语句走正确的PLAN
14.21、去掉分页查询中的DISTINCT
14.22、优化有GROUP
BY的分页语句
14.23、用WITH语句优化查询
14.24、用WITH辅助把OR改为UNION
14.25、错误的WITH改写
14.26、错误的分析函数用法
14.27、用LEFT
JOIN优化多个子查询(一)
14.28、用LEFT
JOIN优化多个子查询(二)
14.29、用LEFT
JOIN优化多个子查询(三)
14.30、去掉由EXISTS引起的FILTER
14.31、巧改驱动表提升效率
14.32、用分析函数更改反连接
14.33、集合判断
14.34、相等集合判断
14.35、用分析函数改写最值过滤条件
14.36、用树形查询找指定级别的数据
14.37、行转列与列转行
14.38、UPDATE、ROW_NUMBER与MERGE
14.39、一个UPDATE语句的优化
14.40、自定义函数对速度的影响
14.41、纠结的MERGE语句
14.42、用CASE
WHEN去掉UNION
ALL
14.43、不恰当的WITH及标量子查询
14.44、用分析函数加“行转列”来优化标量子查询
14.45、用分析函数处理问题
14.46、用列转行改写A表多列关联B表同列
14.47、用分析函数改写最值语句
14.48、多列关联的半连接与索引
14.49、巧用分析函数优化自关联
14.50、纠结的UPDATE语句
14.51、巧用JOIN条件合并UNION
ALL语句
14.52、用分析函数去掉NOT
IN
14.53、读懂查询中的需求之裁剪语句
14.54、去掉FILTER里的EXISTS之活学活用