Oracle查询优化改写技巧与案例2.0

Oracle查询优化改写技巧与案例2.0
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: ,
2018-06
版次: 1
ISBN: 9787121341410
定价: 79.00
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 368页
字数: 488千字
47人买过
  •     《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章  单表查询  1 
    1.1  查询表中所有的行与列  1 
    1.2  从表中检索部分行  2 
    1.3  查找空值  3 
    1.4  空值与运算  3 
    1.5  处理空值  4 
    1.6  空值与函数  5 
    1.7  查找满足多个条件的行  6 
    1.8  从表中检索部分列  7 
    1.9  为列取有意义的名称  7 
    1.10  在WHERE子句中引用取别名的列  8 
    1.11  拼接列  8 
    1.12  在SELECT语句中使用条件逻辑  9 
    1.13  限制返回的行数  11 

     
    第2章  给查询结果排序  12 
    2.1  以指定的次序返回查询结果  12 
    2.2  按多个字段排序  14 
    2.3  按子串排序  15 
    2.4  从表中随机返回n条记录  16 
    2.5  TRANSLATE  18 
    2.6  按数字和字母混合字符串中的字母排序  19 
    2.7  处理排序空值  20 
    2.8  根据条件取不同列中的值来排序  21 

     
    第3章  操作多个表  23 
    3.1  UNION ALL与空字符串  23 
    3.2  UNION与OR  24 
    3.3  UNION与去重  26 
    3.4  组合相关的行  30 
    3.5  IN、EXISTS和INNER JOIN  30 
    3.6  INNER JOIN、LEFT JOIN、RIGHT JOIN和FULL JOIN解析  32 
    3.7  外连接与过滤条件  36 
    3.8  自关联  39 
    3.9  NOT IN、NOT EXISTS和LEFT JOIN  40 
    3.10  检测两个表中的数据及对应数据的条数是否相同  43 
    3.11  聚集与内连接  44 

     
    第4章  插入、更新与删除  49 
    4.1  插入新记录  49 
    4.2  阻止对某几列插入  50 
    4.3  复制表的定义及数据  51 
    4.4  用WITH CHECK OPTION限制数据录入  51 
    4.5  多表插入语句  52 
    4.6  用其他表中的值更新  56 
    4.7  合并记录  62 
    4.8  删除违反参照完整性的记录  64 
    4.9  删除名称重复的记录  64 

     
    第5章  使用字符串  67 
    5.1  生成连续数值  67 
    5.2  遍历字符串  68 
    5.3  计算字符在字符串中出现的次数  69 
    5.4  从字符串中删除不需要的字符  71 
    5.5  将字符和数字数据分离  72 
    5.6  查询只包含字母或数字型的数据  73 
    5.7  提取姓名的大写首字母缩写  78 
    5.8  根据表中的行创建一个分隔列表  79 
    5.9  提取第n个分隔的子串  80 
    5.10  分解IP地址  82 
    5.11  将分隔数据转换为多值IN列表  82 
    5.12  组合去重  83 

     
    第6章  使用数字  86 
    6.1  常用聚集函数  86 
    6.2  列转行  88 
    6.3  行转列  89 
    6.4  生成累计和  91 
    6.5  累计与重复值  95 
    6.6  生成排名  97 
    6.7  返回最值对应信息  98 
    6.8  求总和的百分比  99 

     
    第7章  日期运算  103 
    7.1  日期类型  103 
    7.2  日期计算  105 
    7.3  时间间隔类型  105 
    7.4  日期计算函数  106 
    7.5  间隔月份  108 
    7.6  获取记录间的间隔时间  108 

     
    第8章  日期操作  112 
    8.1  提取日期中的信息  112 
    8.2  提取间隔类型中的信息  115 
    8.3  周的计算  117 
    8.4  计算一年中周内各日期的次数  119 
    8.5  确定一年是否为闰年  123 
    8.6  创建本月日历  123 
    8.7  全年日历  126 
    8.8  补充范围内丢失的值  129 
    8.9  识别重叠的日期范围  131 

     
    第9章  范围处理  134 
    9.1  定位连续值的范围  134 
    9.2  合并连续区间  136 
    9.3  合并重叠区间  140 
    9.4  用WITH进行范围分组  143 

     
    第10章  高级查找  147 
    10.1  给结果集分页  147 
    10.2  使用管道函数把全表查询改为增量查询  149 
    10.3  内联视图与错误数据  153 
    10.4  正确使用分析函数  155 
    10.5  找到包含最大值和最小值的记录  157 
    10.6  提取维度信息  159 

     
    第11章  报表和数据仓库运算  162 
    11.1  行转列子句  162 
    11.2  列转行子句  165 
    11.3  将结果集反向转置为一列  168 
    11.4  打印小票与行列转换  169 
    11.5  数据分组  172 
    11.6  计算简单的小计  173 
    11.7  判别非小计的行  175 
    11.8  对不同组/分区同时实现聚集  177 
    11.9  移动范围取值分析  179 
    11.10  计算本期、新增、累加  182 
    11.11  listagg与小九九  186 

     
    第12章  分层查询  188 
    12.1  简单的树形查询  188 
    12.2  根节点、分支节点、叶子节点  190 
    12.3  sys_connect_by_path  191 
    12.4  树形查询中的排序  192 
    12.5  树形查询中的WHERE  193 
    12.6  查询树形的一个分支  195 
    12.7  剪去一个分支  196 
    12.8  多行字符串的拆分  196 

     
    第13章  应用案例实现  199 
    13.1  解析简单公式  199 
    13.2  匹配汉字  200 
    13.3  多表全外连接的问题  202 
    13.4  根据传入条件返回不同列中的数据  203 
    13.5  拆分字符串进行连接  205 
    13.6  用“行转列”来得到隐含信息  206 
    13.7  用隐藏数据进行行转列  208 
    13.8  用正则表达式提取clob里的文本格式记录集  210 

     
    第14章  改写调优案例分享  212 
    14.1  为什么不建议使用标量子查询  212 
    14.2  用LEFT JOIN优化标量子查询  215 
    14.3  用LEFT JOIN优化标量子查询之聚合改写  216 
    14.4  用LEFT JOIN及行转列优化标量子查询  217 
    14.5  标量中有ROWNUM=1  218 
    14.6  ROWNUM=1引起的逻辑问题  219 
    14.7  标量中有不等关联时改写的问题  222 
    14.8  标量中有聚合函数时改写的问题  226 
    14.9  用分析函数优化标量子查询(一)  229 
    14.10  用分析函数优化标量子查询(二)  231 
    14.11  用分析函数优化标量子查询(三)  233 
    14.12  标量中的树形查询  235 
    14.13  使用标量子查询优化取最值语句  238 
    14.14  用MERGE改写优化UPDATE  240 
    14.15  UPDATE中有ROWNUM=1  243 
    14.16  用MERGE使用左联  245 
    14.17  用MERGE改写UPDATE之多个子查询  249 
    14.18  将UPDATE改写为MERGE时遇到的问题  251 
    14.19  通过分页方式优化最值语句  254 
    14.20  让分页语句走正确的PLAN  256 
    14.21  去掉分页查询中的DISTINCT  257 
    14.22  优化有GROUP BY的分页语句  261 
    14.23  用WITH语句优化查询  264 
    14.24  用WITH辅助把OR改为UNION  265 
    14.25  错误的WITH改写  269 
    14.26  错误的分析函数用法  272 
    14.27  用LEFT JOIN优化多个子查询(一)  274 
    14.28  用LEFT JOIN优化多个子查询(二)  278 
    14.29  用LEFT JOIN优化多个子查询(三)  280 
    14.30  去掉由EXISTS引起的FILTER  283 
    14.31  巧改驱动表提升效率  284 
    14.32  用分析函数更改反连接  286 
    14.33  集合判断  288 
    14.34  相等集合判断  289 
    14.35  用分析函数改写最值过滤条件  291 
    14.36  用树形查询找指定级别的数据  292 
    14.37  行转列与列转行  293 
    14.38  UPDATE、ROW_NUMBER与MERGE  295 
    14.39  一个UPDATE语句的优化  298 
    14.40  自定义函数对速度的影响  302 
    14.41  纠结的MERGE语句  305 
    14.42  用CASE WHEN去掉UNION ALL  308 
    14.43  不恰当的WITH及标量子查询  320 
    14.44  用分析函数加“行转列”来优化标量子查询  323 
    14.45  用分析函数处理问题  326 
    14.46  用列转行改写A表多列关联B表同列  329 
    14.47  用分析函数改写最值语句  332 
    14.48  多列关联的半连接与索引  334 
    14.49  巧用分析函数优化自关联  335 
    14.50  纠结的UPDATE语句  340 
    14.51  巧用JOIN条件合并UNION ALL语句  342 
    14.52  用分析函数去掉NOT IN  345 
    14.53  读懂查询中的需求之裁剪语句  349 
    14.54  去掉FILTER里的EXISTS之活学活用  350 

  • 内容简介:
        《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章  单表查询  1 
    1.1  查询表中所有的行与列  1 
    1.2  从表中检索部分行  2 
    1.3  查找空值  3 
    1.4  空值与运算  3 
    1.5  处理空值  4 
    1.6  空值与函数  5 
    1.7  查找满足多个条件的行  6 
    1.8  从表中检索部分列  7 
    1.9  为列取有意义的名称  7 
    1.10  在WHERE子句中引用取别名的列  8 
    1.11  拼接列  8 
    1.12  在SELECT语句中使用条件逻辑  9 
    1.13  限制返回的行数  11 

     
    第2章  给查询结果排序  12 
    2.1  以指定的次序返回查询结果  12 
    2.2  按多个字段排序  14 
    2.3  按子串排序  15 
    2.4  从表中随机返回n条记录  16 
    2.5  TRANSLATE  18 
    2.6  按数字和字母混合字符串中的字母排序  19 
    2.7  处理排序空值  20 
    2.8  根据条件取不同列中的值来排序  21 

     
    第3章  操作多个表  23 
    3.1  UNION ALL与空字符串  23 
    3.2  UNION与OR  24 
    3.3  UNION与去重  26 
    3.4  组合相关的行  30 
    3.5  IN、EXISTS和INNER JOIN  30 
    3.6  INNER JOIN、LEFT JOIN、RIGHT JOIN和FULL JOIN解析  32 
    3.7  外连接与过滤条件  36 
    3.8  自关联  39 
    3.9  NOT IN、NOT EXISTS和LEFT JOIN  40 
    3.10  检测两个表中的数据及对应数据的条数是否相同  43 
    3.11  聚集与内连接  44 

     
    第4章  插入、更新与删除  49 
    4.1  插入新记录  49 
    4.2  阻止对某几列插入  50 
    4.3  复制表的定义及数据  51 
    4.4  用WITH CHECK OPTION限制数据录入  51 
    4.5  多表插入语句  52 
    4.6  用其他表中的值更新  56 
    4.7  合并记录  62 
    4.8  删除违反参照完整性的记录  64 
    4.9  删除名称重复的记录  64 

     
    第5章  使用字符串  67 
    5.1  生成连续数值  67 
    5.2  遍历字符串  68 
    5.3  计算字符在字符串中出现的次数  69 
    5.4  从字符串中删除不需要的字符  71 
    5.5  将字符和数字数据分离  72 
    5.6  查询只包含字母或数字型的数据  73 
    5.7  提取姓名的大写首字母缩写  78 
    5.8  根据表中的行创建一个分隔列表  79 
    5.9  提取第n个分隔的子串  80 
    5.10  分解IP地址  82 
    5.11  将分隔数据转换为多值IN列表  82 
    5.12  组合去重  83 

     
    第6章  使用数字  86 
    6.1  常用聚集函数  86 
    6.2  列转行  88 
    6.3  行转列  89 
    6.4  生成累计和  91 
    6.5  累计与重复值  95 
    6.6  生成排名  97 
    6.7  返回最值对应信息  98 
    6.8  求总和的百分比  99 

     
    第7章  日期运算  103 
    7.1  日期类型  103 
    7.2  日期计算  105 
    7.3  时间间隔类型  105 
    7.4  日期计算函数  106 
    7.5  间隔月份  108 
    7.6  获取记录间的间隔时间  108 

     
    第8章  日期操作  112 
    8.1  提取日期中的信息  112 
    8.2  提取间隔类型中的信息  115 
    8.3  周的计算  117 
    8.4  计算一年中周内各日期的次数  119 
    8.5  确定一年是否为闰年  123 
    8.6  创建本月日历  123 
    8.7  全年日历  126 
    8.8  补充范围内丢失的值  129 
    8.9  识别重叠的日期范围  131 

     
    第9章  范围处理  134 
    9.1  定位连续值的范围  134 
    9.2  合并连续区间  136 
    9.3  合并重叠区间  140 
    9.4  用WITH进行范围分组  143 

     
    第10章  高级查找  147 
    10.1  给结果集分页  147 
    10.2  使用管道函数把全表查询改为增量查询  149 
    10.3  内联视图与错误数据  153 
    10.4  正确使用分析函数  155 
    10.5  找到包含最大值和最小值的记录  157 
    10.6  提取维度信息  159 

     
    第11章  报表和数据仓库运算  162 
    11.1  行转列子句  162 
    11.2  列转行子句  165 
    11.3  将结果集反向转置为一列  168 
    11.4  打印小票与行列转换  169 
    11.5  数据分组  172 
    11.6  计算简单的小计  173 
    11.7  判别非小计的行  175 
    11.8  对不同组/分区同时实现聚集  177 
    11.9  移动范围取值分析  179 
    11.10  计算本期、新增、累加  182 
    11.11  listagg与小九九  186 

     
    第12章  分层查询  188 
    12.1  简单的树形查询  188 
    12.2  根节点、分支节点、叶子节点  190 
    12.3  sys_connect_by_path  191 
    12.4  树形查询中的排序  192 
    12.5  树形查询中的WHERE  193 
    12.6  查询树形的一个分支  195 
    12.7  剪去一个分支  196 
    12.8  多行字符串的拆分  196 

     
    第13章  应用案例实现  199 
    13.1  解析简单公式  199 
    13.2  匹配汉字  200 
    13.3  多表全外连接的问题  202 
    13.4  根据传入条件返回不同列中的数据  203 
    13.5  拆分字符串进行连接  205 
    13.6  用“行转列”来得到隐含信息  206 
    13.7  用隐藏数据进行行转列  208 
    13.8  用正则表达式提取clob里的文本格式记录集  210 

     
    第14章  改写调优案例分享  212 
    14.1  为什么不建议使用标量子查询  212 
    14.2  用LEFT JOIN优化标量子查询  215 
    14.3  用LEFT JOIN优化标量子查询之聚合改写  216 
    14.4  用LEFT JOIN及行转列优化标量子查询  217 
    14.5  标量中有ROWNUM=1  218 
    14.6  ROWNUM=1引起的逻辑问题  219 
    14.7  标量中有不等关联时改写的问题  222 
    14.8  标量中有聚合函数时改写的问题  226 
    14.9  用分析函数优化标量子查询(一)  229 
    14.10  用分析函数优化标量子查询(二)  231 
    14.11  用分析函数优化标量子查询(三)  233 
    14.12  标量中的树形查询  235 
    14.13  使用标量子查询优化取最值语句  238 
    14.14  用MERGE改写优化UPDATE  240 
    14.15  UPDATE中有ROWNUM=1  243 
    14.16  用MERGE使用左联  245 
    14.17  用MERGE改写UPDATE之多个子查询  249 
    14.18  将UPDATE改写为MERGE时遇到的问题  251 
    14.19  通过分页方式优化最值语句  254 
    14.20  让分页语句走正确的PLAN  256 
    14.21  去掉分页查询中的DISTINCT  257 
    14.22  优化有GROUP BY的分页语句  261 
    14.23  用WITH语句优化查询  264 
    14.24  用WITH辅助把OR改为UNION  265 
    14.25  错误的WITH改写  269 
    14.26  错误的分析函数用法  272 
    14.27  用LEFT JOIN优化多个子查询(一)  274 
    14.28  用LEFT JOIN优化多个子查询(二)  278 
    14.29  用LEFT JOIN优化多个子查询(三)  280 
    14.30  去掉由EXISTS引起的FILTER  283 
    14.31  巧改驱动表提升效率  284 
    14.32  用分析函数更改反连接  286 
    14.33  集合判断  288 
    14.34  相等集合判断  289 
    14.35  用分析函数改写最值过滤条件  291 
    14.36  用树形查询找指定级别的数据  292 
    14.37  行转列与列转行  293 
    14.38  UPDATE、ROW_NUMBER与MERGE  295 
    14.39  一个UPDATE语句的优化  298 
    14.40  自定义函数对速度的影响  302 
    14.41  纠结的MERGE语句  305 
    14.42  用CASE WHEN去掉UNION ALL  308 
    14.43  不恰当的WITH及标量子查询  320 
    14.44  用分析函数加“行转列”来优化标量子查询  323 
    14.45  用分析函数处理问题  326 
    14.46  用列转行改写A表多列关联B表同列  329 
    14.47  用分析函数改写最值语句  332 
    14.48  多列关联的半连接与索引  334 
    14.49  巧用分析函数优化自关联  335 
    14.50  纠结的UPDATE语句  340 
    14.51  巧用JOIN条件合并UNION ALL语句  342 
    14.52  用分析函数去掉NOT IN  345 
    14.53  读懂查询中的需求之裁剪语句  349 
    14.54  去掉FILTER里的EXISTS之活学活用  350 

查看详情