【ORACLE】基于Oracle的SQL优化

发布者:烟雨万重

评论

第1章 Oracle 里的优化器
1.1 什么是Oracle 里的优化器
1.1.1 基于规则的优化器
1.1.2 基于成本的优化器
1.1.2.1 集的势
1.1.2.2 可选择率
1.1.2.3 可传递性
1.1.2.4 CBO 的局限性
1.2 优化器的基础知识
1.2.1 优化器的模式
1.2.2 结果集
1.2.3 访问数据的方法
1.2.3.1 访问表的方法
1.2.3.1.1 全表扫描
1.2.3.1.2 ROWID 扫描
1.2.3.2 访问索引的方法
1.2.3.2.1 索引唯一性扫描
1.2.3.2.2 索引范围扫描
1.2.3.2.3 索引全扫描
1.2.3.2.4 索引快速全扫描
1.2.3.2.5 索引跳跃式扫描
1.2.4 表连接
1.2.4.1 表连接的类型
1.2.4.1.1 内连接
1.2.4.1.2 外连接
1.2.4.2 表连接的方法
1.2.4.2.1 排序合并连接
1.2.4.2.2 嵌套循环连接
1.2.4.2.3 哈希连接
1.2.4.2.4 笛卡儿连接
1.2.4.3 反连接
1.2.4.4 半连接
1.2.4.5 星型连接
1.3 优化器模式对CBO 计算成本带来巨大影响的实例
1.4 总结
第2章 Oracle 里的执行计划
2.1 什么是执行计划
2.2 如何查看执行计划
2.2.1 explain plan 命令
2.2.2 DBMS_XPLAN 包
2.2.3 AUTOTRACE 开关
2.2.4 事件与tkprof 命令
2.3 如何得到真实的执行计划
2.4 如何查看执行计划的执行顺序
2.5 Oracle 里的常见执行计划
2.5.1 与表访问相关的执行计划
2.5.2 与B 树索引相关的执行计划
2.5.3 与位图索引相关的执行计划
2.5.4 与表连接相关的执行计划
2.5.5 其他典型的执行计划
2.5.5.1 AND-EQUAL(INDEX MERGE)
2.5.5.2 INDEX JOIN
2.5.5.3 VIEW
2.5.5.4 FILTER
2.5.5.5 SORT
2.5.5.6 UNION/UNION ALL
2.5.5.7 CONCAT
2.5.5.8 CONNECT BY
2.6 Oracle 里执行计划的稳定
2.6.1 使用SQL Profile 来稳定执行计划
2.6.1.1 Automatic 类型的SQL Profile
2.6.1.2 Manual 类型的SQL Profile
2.6.2 使用SPM 来稳定执行计划
2.7 总结
第3章 Oracle 里的Cursor 和绑定变量
3.1 Oracle 里的Cursor
3.1.1 Oracle 里的Shared Cursor
3.1.1.1 Shared Cursor 的含义
3.1.1.2 硬解析
3.1.1.3 软解析
3.1.2 Oracle 里的Session Cursor
3.1.2.1 Session Cursor 的含义
3.1.2.2 Session Cursor 的相关参数解析
3.1.2.2.1 OPEN_CURSORS
3.1.2.2.2 SESSION_CACHED_CURSORS
3.1.2.2.3 CURSOR_SPACE_FOR_TIME
3.1.2.3 Session Cursor 的种类和用法
3.1.2.3.1 隐式游标
3.1.2.3.2 显式游标
3.1.2.3.3 参考游标
3.2 Oracle 里的绑定变量
3.2.1 绑定变量的作用
3.2.2 绑定变量的典型用法
3.2.3 绑定变量的使用原则和最佳实践
3.2.3.1 PL/SQL 批量绑定模板一
3.2.3.2 PL/SQL 批量绑定模板二
3.2.4 绑定变量窥探
3.2.5 绑定变量分级
3.2.6 绑定变量的个数不宜太多
3.2.7 批量绑定时如何处理错误
3.2.8 如何得到已执行的目标SQL 中绑定变量的值
3.3 Oracle 里的游标共享
3.3.1 常规游标共享
3.3.2 自适应游标共享
3.4 Oracle 里的应用类型
3.4.1 Session Cursor 的生命周期
3.4.2 应用类型一(硬解析)
3.4.3 应用类型二(软解析)
3.4.4 应用类型三(软软解析)
3.4.5 应用类型四(一次解析、多次执行)
3.4.6 四种应用类型的实测性能对比
3.5 总结
第4章 Oracle 里的查询转换
4.1 Oracle 里查询转换的作用
4.2 子查询展开
4.3 视图合并
4.3.1 简单视图合并
4.3.2 外连接视图合并
4.3.3 复杂视图合并
4.4 星型转换
4.5 连接谓词推入
4.6 连接因式分解
4.7 表扩展
4.8 表移除
4.9 Oracle 如何处理SQL 语句中的IN
4.9.1 IN-List Iterator
4.9.2 IN-List Expansion / OR Expansion
4.9.3 IN-List Filter
4.9.4 对IN 做子查询展开/视图合并
4.10 查询转换的综合应用实例(逻辑读从200 万降到6)
4.11 总结
第5章 Oracle 里的统计信息
5.1 什么是Oracle 里的统计信息
5.2 Oracle 里收集与查看统计信息的方法
5.2.1 收集统计信息
5.2.1.1 用ANALYZE 命令收集统计信息
5.2.1.2 用DBMS_STATS 包收集统计信息
5.2.1.3 ANALYZE 和DBMS_STATS 的区别
5.2.2 查看统计信息
5.3 表的统计信息
5.3.1 表统计信息的种类和含义
5.3.2 表统计信息不准导致SQL 性能问题的实例
5.4 索引的统计信息
5.4.1 索引统计信息的种类和含义
5.4.2 聚簇因子的含义及重要性
5.5 列的统计信息
5.5.1 列统计信息的种类和含义
5.5.2 列统计信息不准导致谓词越界的实例
5.5.3 直方图
5.5.3.1 直方图的含义
5.5.3.2 直方图的类型
5.5.3.2.1 Frequency 类型的直方图
5.5.3.2.2 Height Balanced 类型的直方图
5.5.3.3 直方图的收集方法
5.5.3.4 直方图对CBO 的影响
5.5.3.4.1 直方图对Shared Cursor 的影响
5.5.3.4.2 直方图对可选择率的影响
5.5.3.5 使用直方图的注意事项
5.6 全局统计信息
5.7 动态采样
5.8 多列统计信息
5.9 系统统计信息
5.10 数据字典统计信息
5.11 内部对象统计信息
5.12 Oracle 里的自动统计信息收集
5.13 Oracle 里应如何收集统计信息
5.14 总结
第6章 Oracle 里的Hint
6.1 什么是Hint
6.2 Hint 的用法
6.3 Hint 被Oracle 忽略的常见情形
6.3.1 情形一:使用的Hint 有语法或者拼写错误
6.3.2 情形二:使用的Hint 无效
6.3.3 情形三:使用的Hint 自相矛盾
6.3.4 情形四:使用的Hint 受到了查询转换的干扰
6.3.5 情形五:使用的Hint 受到了保留关键字的干扰
6.4 常见的Hint
6.4.1 与优化器模式相关的Hint
6.4.1.1 ALL_ROWS
6.4.1.2 FIRST_ROWS(n)
6.4.1.3 RULE
6.4.2 与表访问相关的Hint
6.4.2.1 FULL
6.4.2.2 ROWID
6.4.3 与索引访问相关的Hint
6.4.3.1 INDEX
6.4.3.2 NO_INDEX
6.4.3.3 INDEX_DESC
6.4.3.4 INDEX_COMBINE
6.4.3.5 INDEX_FFS
6.4.3.6 INDEX_JOIN
6.4.3.7 AND_EQUAL
6.4.4 与表连接顺序相关的Hint
6.4.4.1 ORDERED
6.4.4.2 LEADING
6.4.5 与表连接方法相关的Hint
6.4.5.1 USE_MERGE
6.4.5.2 NO_USE_MERGE
6.4.5.3 USE_NL
6.4.5.4 NO_USE_NL
6.4.5.5 USE_HASH
6.4.5.6 NO_USE_HASH
6.4.5.7 MERGE_AJ
6.4.5.8 NL_AJ
6.4.5.9 HASH_AJ
6.4.5.10 MERGE_SJ
6.4.5.11 NL_SJ
6.4.5.12 HASH_SJ
6.4.6 与查询转换相关的Hint
6.4.6.1 USE_CONCAT
6.4.6.2 NO_EXPAND
6.4.6.3 MERGE
6.4.6.4 NO_MERGE
6.4.6.5 UNNEST
6.4.6.6 NO_UNNEST
6.4.6.7 EXPAND_TABLE
6.4.6.8 NO_EXPAND_TABLE
6.4.7 与并行相关的Hint
6.4.7.1 PARALLEL
6.4.7.2 NO_PARALLEL
6.4.7.3 PARALLEL_INDEX
6.4.7.4 NO_PARALLEL_INDEX
6.4.8 其他常见Hint
6.4.8.1 DRIVING_SITE
6.4.8.2 APPEND
6.4.8.3 APPEND_VALUES
6.4.8.4 PUSH_PRED
6.4.8.5 NO_PUSH_PRED
6.4.8.6 PUSH_SUBQ
6.4.8.7 NO_PUSH_SUBQ
6.4.8.8 OPT_PARAM
6.4.8.9 OPTIMIZER_FEATURES_ENABLE
6.4.8.10 QB_NAME
6.4.8.11 CARDINALITY
6.4.8.12 SWAP_JOIN_INPUTS
6.5 用Cardinality Hint 解决ORA-01555 错误的实例
6.6 总结
第7章 Oracle 里的并行
7.1 Oracle 里并行的基本概念
7.1.1 为什么要用并行
7.1.2 并行的理论基础
7.1.3 Oracle 里能够并行执行的操作
7.1.4 Oracle 里与并行有关的术语及解释
7.1.4.1 Query Coordinator
7.1.4.2 Query Slaves 和Query Slave Set
7.1.4.3 Table Queues
7.1.4.4 数据传递方法
7.1.4.5 granules
7.1.4.6 直接读取
7.1.5 深入解析并行执行计划的实例
7.2 Oracle 里并行的控制
7.2.1 Oracle 里如何开启并行
7.2.2 Oracle 里并行度的控制
7.2.3 Oracle RAC 环境下的并行
7.2.4 Oracle 里与并行相关的参数
7.2.4.1 PARALLEL_MAX_SERVERS
7.2.4.2 PARALLEL_MIN_SERVERS
7.2.4.3 自动并行相关的参数
7.2.4.3.1 PARALLEL_DEGREE_POLICY
7.2.4.3.2 PARALLEL_MIN_TIME_THRESHOLD
7.2.4.3.3 PARALLEL_DEGREE_LIMIT
7.2.4.3.4 PARALLEL_SERVERS_TARGET
7.2.4.4 自适应并行相关的参数
7.2.4.4.1 PARALLEL_ADAPTIVE_MULTI_USER
7.2.4.4.2 PARALLEL_MIN_PERCENT
7.2.4.4.3 PARALLEL_AUTOMATIC_TUNING
7.2.4.5 其他参数
7.2.4.5.1 PARALLEL_THREADS_PER_CPU
7.2.4.5.2 PARALLEL_EXECUTION_MESSAGE_SIZE
7.2.4.5.3 PARALLEL_FORCE_LOCAL
7.2.5 绕开Oracle 并行执行Bug 大幅提升性能的实例
7.3 总结
第8章 Oracle 里SQL 优化的方法论
8.1 Oracle 里如何做SQL 优化
8.1.1 Oracle 里SQL 优化的本质是基于对CBO 和执行计划的深刻理解
8.1.2 Oracle 里SQL 优化需要联系实际的业务
8.1.3 Oracle 里SQL 优化需要适时使用绑定变量
8.2 Oracle 里SQL 优化的方法论在实战中的验证
8.3 总结

*文档下载链接:>>展开

感谢资源主不一定会看,还是先收了冲冲冲跟着学习通俗易懂。解决了我的问题支持,必须的啊!一起加油怎么下载不了能骂人吗?链接打不开骗人玩意,下载不了

可能你也喜欢:

【Mysql】Mysql性能调优实战视频课程下载

全新的MySQL企业级性能调优实战课程,...

【Redis】Redis项目实战视频课程下载

打开Redis技能上限!Redis企业级高并发集群实战-分布式缓存架构+Redis百万级别秒杀

【Oracle】Oracle 12G数据库管理精髓视频教程

本套视频从初学者的角度出发,以通俗易懂的语言,丰富多彩的实例,详细介绍了使用Oracle-12g进行数据管理及开发应用的各方面技术

[JAVA]最新Java在线支付开发全流程实战课程视频

微信+支付宝在线支付 全栈开发全流程项目实战

【云架构师】云架构师深度培训视频课程

课程从云原生技术,到云监控,分布式存储极致性能Redis6,微服务核心源码深度解析,人工智能AI,JUC,JVM大数据技术,算法实战,清一色大厂纯原技术

【深度学习】深度学习极限训练拔高课程

人工智能再深入!深度学习情感分析+高级黑科技

【华为HCIP】华为最新版本HCIP RS数通方向认证视频课程

提升企业级网络性能 新版华为HCIP-R&S-IENPV2.5 华为高级网络工程师 数通路由交换

【CISSP】CISSP培训视频及备考资料

CISSP视频培训,录音培训,文档资料合集,你能找到比这更全的算我输

【概率论与数理统计】概率论与数理统计视频课程

绝对是最简单易懂的概率论与数理统计视频课程,如果这个课程无法让你学会,建议你放弃。

【VMWARE】企业级Vmware vSphere 7项目实战教程

VMFS数据存储+配置iSCSI存储+HA高可用性+高级实验

开源项目如何盈利

开源项目通常是免费使用的,但是这并不意味...