基于Oracle的SQL优化PDF电子书下载
- 电子书积分:22 积分如何计算积分?
- 作 者:崔华编著
- 出 版 社:北京:电子工业出版社
- 出版年份:2014
- ISBN:9787121217586
- 页数:842 页
第1章 Oracle里的优化器 1
1.1 什么是Oracle里的优化器 1
1.1.1 基于规则的优化器 2
1.1.2 基于成本的优化器 9
1.1.2.1 集的势 11
1.1.2.2 可选择率 11
1.1.2.3 可传递性 16
1.1.2.4 CBO的局限性 18
1.2 优化器的基础知识 19
1.2.1 优化器的模式 19
1.2.2 结果集 21
1.2.3 访问数据的方法 22
1.2.3.1 访问表的方法 22
1.2.3.1.1 全表扫描 22
1.2.3.1.2 ROWID扫描 23
1.2.3.2 访问索引的方法 24
1.2.3.2.1 索引唯一性扫描 25
1.2.3 2.2 索引范围扫描 25
1.2.3.2.3 索引全扫描 28
1.2.3.2.4 索引快速全扫描 29
1.2.3.2.5 索引跳跃式扫描 31
1.2.4 表连接 33
1.2.4.1 表连接的类型 34
1.2.4.1.1 内连接 34
1.2.4.1.2 外连接 37
1.2.4.2 表连接的方法 47
1.2.4.2.1 排序合并连接 47
1.2.4.2.2 嵌套循环连接 48
1.2.4 2.3 哈希连接 51
1.2.4.2.4 笛卡儿连接 56
1.2.4.3 反连接 58
1.2.4.4 半连接 63
1.2.4.5 星型连接 65
1.3 优化器模式对CBO计算成本带来巨大影响的实例 66
1.4 总结 80
第2章 Oracle里的执行计划 82
2.1 什么是执行计划 82
2.2 如何查看执行计划 85
2.2.1 explain plan命令 86
2.2.2 DBMS_XPLAN包 89
2.2.3 AUTOTRACE开关 95
2.2.4 10046事件与tkprof命令 99
2.3 如何得到真实的执行计划 102
2.4 如何查看执行计划的执行顺序 118
2.5 Oracle里的常见执行计划 122
2.5.1 与表访问相关的执行计划 122
2.5.2 与B树索引相关的执行计划 124
2.5.3 与位图索引相关的执行计划 129
2.5.4 与表连接相关的执行计划 138
2.5.5 其他典型的执行计划 146
2.5.5.1 AND-EQUAL(INDEX MERGE) 146
2.5.5.2 INDEX JOIN 148
2.5.5.3 VIEW 149
2.5.5.4 FILTER 151
2.5.5.5 SORT 154
2.5.5 6 UNION/UNION ALL 167
2.5.5.7 CONCAT 168
2.5.5.8 CONNECT BY 171
2.6 Oracle里执行计划的稳定 172
2.6.1 使用SQL Profile来稳定执行计划 173
2.6.1.1 Automatic类型的SQL Profile 173
2.6.1.2 Manual类型的SQL Profile 179
2.6.2 使用SPM来稳定执行计划 190
2.7 总结 203
第3章 Oracle里的Cursor和绑定变量 204
3.1 Oracle里的Cursor 204
3.1.1 Oracle里的Shared Cursor 204
3.1.1.1 Shared Cursor的含义 204
3.1.1.2 硬解析 212
3.1.1.3 软解析 214
3.1.2 Oracle里的Session Cursor 215
3.1.2.1 SessionCursor的含义 215
3.1.2.2 SessionCursor的相关参数解析 218
3.1.2.2.1 OPEN_CURSORS 218
3.1.2.2.2 SESSION_CACHED_CURSORS 219
3.1.2.2.3 CURSOR_SPACE_FOR_TIME 221
3.1.2.3 Session Cursor的种类和用法 222
3.1.2.3.1 隐式游标 222
3.1.2.3.2 显式游标 225
3.1.2.3.3 参考游标 230
3.2 Oracle里的绑定变量 237
3.2.1 绑定变量的作用 237
3.2.2 绑定变量的典型用法 238
3.2.3 绑定变量的使用原则和最佳实践 245
3.2.3.1 PL/SQL批量绑定模板一 245
3.2.3.2 PL/SQL批量绑定模板二 247
3.2.4 绑定变量窥探 258
3.2.5 绑定变量分级 270
3.2.6 绑定变量的个数不宜太多 276
3.2.7 批量绑定时如何处理错误 280
3.2.8 如何得到已执行的目标SQL中绑定变量的值 283
3.3 Oracle里的游标共享 288
3.3.1 常规游标共享 289
3.3.2 自适应游标共享 297
3.4 Oracle里的应用类型 320
3.4.1 Session Cursor的生命周期 320
3.4.2 应用类型一(硬解析) 322
3.4.3 应用类型二(软解析) 323
3.4.4 应用类型三(软软解析) 323
3.4.5 应用类型四(一次解析、多次执行) 324
3.4.6 四种应用类型的实测性能对比 325
3.5 总结 333
第4章 Oracle里的查询转换 335
4.1 Oracle里查询转换的作用 335
4.2 子查询展开 336
4.3 视图合并 344
4.3.1 简单视图合并 345
4.3.2 外连接视图合并 351
4.3.3 复杂视图合并 354
4.4 星型转换 365
4.5 连接谓词推入 372
4.6 连接因式分解 379
4.7 表扩展 387
4.8 表移除 396
4.9 Oracle如何处理SQL语句中的IN 401
4.9.1 IN-List Iterator 402
4.9.2 IN-List Expansion/OR Expansion 404
4.9.3 IN-List Filter 409
4.9.4 对IN做子查询展开/视图合并 410
4.1 0查询转换的综合应用实例(逻辑读从200万降到6) 413
4.1 1 总结 420
第5章 Oracle里的统计信息 422
5.1 什么是Oracle里的统计信息 422
5.2 Oracle里收集与查看统计信息的方法 423
5.2.1 收集统计信息 423
5.2.1.1 用ANALYZE命令收集统计信息 423
5.2.1.2 用DBMS STATS包收集统计信息 428
5.2.1.3 ANALYZE和DBMS_STATS的区别 432
5.2.2 查看统计信息 433
5.3 表的统计信息 435
5.3.1 表统计信息的种类和含义 435
5.3.2 表统计信息不准导致SQL性能问题的实例 437
5.4 索引的统计信息 440
5.4.1 索引统计信息的种类和含义 440
5.4.2 聚簇因子的含义及重要性 442
5.5 列的统计信息 450
5.5.1 列统计信息的种类和含义 450
5.5.2 列统计信息不准导致谓词越界的实例 454
5.5.3 直方图 460
5.5.3.1 直方图的含义 460
5.5.3.2 直方图的类型 462
5.5.3.2.1 Frequency类型的直方图 463
5.5.3.2.2 Height Balanced类型的直方图 471
5.5.3.3 直方图的收集方法 475
5.5.3.4 直方图对CBO的影响 477
5.5.3.4.1 直方图对Shared Cursor的影响 477
5.5.3.4.2 直方图对可选择率的影响 482
5.5.3.5 使用直方图的注意事项 495
5.6 全局统计信息 496
5.7 动态采样 507
5.8 多列统计信息 516
5.9 系统统计信息 519
5.1 0数据字典统计信息 536
5.1 1 内部对象统计信息 539
5.1 2 Oracle里的自动统计信息收集 546
5.1 3 Oracle里应如何收集统计信息 563
5.1 4总结 567
第6章 Oracle里的Hint 568
6.1 什么是Hint 568
6.2 Hint的用法 576
6.3 Hint被Oracle忽略的常见情形 590
6.3.1 情形一:使用的Hint有语法或者拼写错误 591
6.3.2 情形二:使用的Hint无效 592
6.3.3 情形三:使用的Hint自相矛盾 597
6.3.4 情形四:使用的Hint受到了查询转换的干扰 599
6.3.5 情形五:使用的Hint受到了保留关键字的干扰 602
6.4 常见的Hint 605
6.4.1 与优化器模式相关的Hint 606
6.4.1.1 ALL_ROWS 606
6.4 1.2 F1RST_ROWS(n) 606
6.4 1.3 RULE 608
6.4.2 与表访问相关的Hint 615
6.4.2.1 FULL 615
6.4.2.2 ROWID 615
6.4.3 与索引访问相关的Hint 615
6.4.3.1 INDEX 615
6.4.3.2 NO_INDEX 616
6.4.3.3 INDEX_DESC 617
6.4.3.4 INDEX_COMBINE 618
6.4.3.5 INDEX_FFS 620
6.4.3.6 INDEX_JOIN 621
6.4.3.7 AND_EQUAL 622
6.4.4 与表连接顺序相关的Hint 624
6.4.4.1 ORDERED 624
6.4.4.2 LEADING 626
6.4.5 与表连接方法相关的Hint 628
6.4.5.1 USE_MERGE 628
6.4.5.2 NO_USE_MERGE 631
6.4.5.3 USE_NL 633
6.4.5.4 NO_USE_NL 634
6.4.5.5 USE_HASH 635
6.4.5.6 NO_USE_HASH 635
6.4.5.7 MERGE_AJ 636
6.4.5.8 NL_AJ 637
6.4.5.9 HASH_AJ 637
6.4.5.1 0 MERGE_SJ 637
6.4.5 11 NL_SJ 638
6.4.5.1 2 HASH_SJ 639
6.4.6 与查询转换相关的Hint 639
6.4.6.1 USE_CONCAT 639
6.4.6.2 NO_EXPAND 640
6.4 6.3 MERGE 642
6.4.6.4 NO_MERGE 642
6.4.6.5 UNNEST 643
6.4 6.6 NO_UNNEST 643
6.4.6.7 EXPAND_TABLE 644
6.4.6.8 NO_EXPAND_TABLE 644
6.4.7 与并行相关的Hint 645
6.4.7.1 PARALLEL 645
6.4.7.2 NO_PARALLEL 652
6.4.7.3 PARALLEL_INDEX 654
6.4.7.4 NO PARALLEL_INDEX 656
6.4.8 其他常见Hint 656
6.4.8.1 DRIVING_SITE 656
6.4.8.2 APPEND 659
6.4.8.3 APPEND_VALUES 662
6.4.8.4 PUSH_PRED 664
6.4.8.5 NO_PUSH_PRED 666
6.4.8.6 PUSH_SUBQ 666
6.4.8.7 NO_PUSH_SUBQ 669
6.4.8.8 OPT_PARAM 670
6.4.8.9 OPTIMIZER_FEATURES_ENABLE 672
6.4.8.1 0 QB_NAME 674
6.4.8.1 1 CARDINALITY 674
6.4.8.1 2 SWAP_JOIN_INPUTS 677
6.5 用Cardinality_Hint解决ORA-01555错误的实例 682
6.6 总结 693
第7章 Oracle里的并行 695
7.1 Oracle里并行的基本概念 695
7.1.1 为什么要用并行 695
7.1.2 并行的理论基础 696
7.1.3 Oracle里能够并行执行的操作 697
7.1.4 Oracle里与并行有关的术语及解释 707
7.1.4.1 QueryCoordinator 708
7.1.4.2 Query Slaves和Query Slave Set 708
7.1.4.3 Table Queues 716
7.1.4.4 数据传递方法 721
7.1.4.5 granules 735
7.1.4.6 直接读取 737
7.1.5 深入解析并行执行计划的实例 746
7.2 Oracle里并行的控制 755
7.2.1 Oracle里如何开启并行 755
7.2.2 Oracle里并行度的控制 760
7.2.3 Oracle RAC环境下的并行 771
7.2.4 Oracle里与并行相关的参数 775
7.2.4.1 PARALLEL_MAX_SERVERS 775
7.2.4.2 PARALLEL_M1N_SERVERS 776
7.2.4.3 自动并行相关的参数 776
7.2.4.3.1 PARALLEL_DEGREE_POLICY 776
7.2.4.3.2 PARALLEL_MIN_TIME_THRESHOLD 776
7.2.4.3.3 PARALLEL_DEGREE_LIMIT 777
7.2.4.3.4 PARALLEL_SERVERS_TARGET 777
7.2.4.4 自适应并行相关的参数 778
7.2.4.4.1 PARALLEL_ADAPTIVE_MULTI_USER 778
7.2.4.4.2 PARALLEL_MIN_PERCENT 778
7.2.4.4.3 PARALLEL_AUTOMATIC_TUNING 778
7.2.4.5 其他参数 778
7.2.4.5.1 PARALLEL_THREADS_PER_CPU 778
7.2.4.5.2 PARALLEL_EXECUTION_MESSAGE_SIZE 779
7.2.4.5.3 PARALLEL_FORCE_LOCAL 779
7.2.5 绕开Oracle并行执行Bug大幅提升性能的实例 779
7.3 总结 805
第8章 Oracle里SQL优化的方法论 807
8.1 Oracle里如何做SQL优化 807
8.1.1 Oracle里SQL优化的本质是基于对CBO和执行计划的深刻理解 807
8.1.2 Oracle里SQL优化需要联系实际的业务 819
8.1.3 Oracle里SQL优化需要适时使用绑定变量 824
8.2 Oracle里SQL优化的方法论在实战中的验证 824
8.3 总结 841
- 《碧岩录编著者 圜悟克勤大师传 全新小说版》吴言生著 2011
- 《英语 选修8 人民教育出版社 课程教材研究所 英语课程教材研究开发中心编著》刘道义主编;龚亚夫,郑旺全副主编 2007
- 《建设工程监理操作指南 按新规范编著》李明安编著 2013
- 《生物2 遗传与进化 必修 教师教学用书 人民教育出版社,课程教材研究所,生物课程教材研究开发中心编著》朱正威,赵占良主编;李红副主编 2007
- 《语文 4 必修 人民教育出版社,课程教材研究所,中学语文课程教材研究开发中心,北京大学中文系,语文教育研究所编著》熊江平,刘勇强主编 2006
- 《地图阅读与考察 初中适用 森玛逊(香港)教育研究中心地理组编著》何任小薇主编 1989
- 《多媒体素材制作与编著集成》刘毓敏,梁斌,黄炎波编著 2006
- 《农村科技示范户100例《农村科技示范户100例》编写组编著》《农村科技示范户100例》编写组编著 1986
- 《汉口宁波帮 陈祖源等编著》华长慧主编 2009
- 《江西编著人物传略》黄日星,姜钦云编 1994
- 《市政工程基础》杨岚编著 2009
- 《家畜百宝 猪、牛、羊、鸡的综合利用》山西省商业厅组织技术处编著 1959
- 《《道德经》200句》崇贤书院编著 2018
- 《高级英语阅读与听说教程》刘秀梅编著 2019
- 《计算机网络与通信基础》谢雨飞,田启川编著 2019
- 《看图自学吉他弹唱教程》陈飞编著 2019
- 《法语词汇认知联想记忆法》刘莲编著 2020
- 《培智学校义务教育实验教科书教师教学用书 生活适应 二年级 上》人民教育出版社,课程教材研究所,特殊教育课程教材研究中心编著 2019
- 《国家社科基金项目申报规范 技巧与案例 第3版 2020》文传浩,夏宇编著 2019
- 《流体力学》张扬军,彭杰,诸葛伟林编著 2019
- 《电子测量与仪器》人力资源和社会保障部教材办公室组织编写 2009
- 《少儿电子琴入门教程 双色图解版》灌木文化 2019
- 《指向核心素养 北京十一学校名师教学设计 英语 七年级 上 配人教版》周志英总主编 2019
- 《北京生态环境保护》《北京环境保护丛书》编委会编著 2018
- 《指向核心素养 北京十一学校名师教学设计 英语 九年级 上 配人教版》周志英总主编 2019
- 《通信电子电路原理及仿真设计》叶建芳 2019
- 《高等院校旅游专业系列教材 旅游企业岗位培训系列教材 新编北京导游英语》杨昆,鄢莉,谭明华 2019
- 《电子应用技术项目教程 第3版》王彰云 2019
- 《中国十大出版家》王震,贺越明著 1991
- 《近代民营出版机构的英语函授教育 以“商务、中华、开明”函授学校为个案 1915年-1946年版》丁伟 2017