[原创]Oracle SQL语句的优化分析路线_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 1883 | 回复: 0   主题: [原创]Oracle SQL语句的优化分析路线        下一篇 
lei.wang
注册用户
等级:上尉
经验:767
发帖:21
精华:0
注册:1970-1-1
状态:离线
发送短消息息给lei.wang 加好友    发送短消息息给lei.wang 发消息
发表于: IP:您无权察看 2015-3-23 15:41:47 | [全部帖] [楼主帖] 楼主


《DBA的思想天空:感悟Oracle数据库本质(白鳝)》第15.4章节学习笔记

.


SQL语句优化的工作


q 查找 TOP SQL; 
q 分析 SQL对系统的影响; 
q 分析 SQL的优化方法; 
q 制订优化计划; 
q 实施优化操作; 
q 评估优化效果;
.

查找TOP SQL的方法


q AWR/STATSPACK/ADDM/ASH报告; 
q EM ADDM分析; 

q SQLA(来自Metalink的工具);
q V$SQL/V$SQLAREA;
q Oracle 9i SQLANALYZER;
q Oracle 9i EM TOP SQL;


.

常见的 SQL优化方法


q 调整索引; 
q 调整执行计划; 
q 优化相关表的存储结构; (改变表结构、减少表碎片)
q 数据归档; 
q 表和索引分析策略调整; 
q 调整 SQL执行时间窗口; 
q 限制数据查询范围 ; 
q 修改 SQL
.

SQL优化最为关键的因素


主要体现在三个方面:一是多表连接的顺序,二是两个表连接的方式,三是单表访问的路径
分析 SQL中每个表的过滤条件,确定每个单表的最佳访问路径:表的访问路径大体可分为全表扫描、索引唯一性扫描、索引范围扫描、快速全索引扫描、索引跳跃式扫描、分区扫描等
对于每张单表,首先要根据表上面的过滤条件确定每张表经过过滤条件后可能产生的结果集的大小。然后根据结果集和表的大小的比较,我们就可以选择出合适的单表访问路径
对于多表连接,确定表的连接顺序是最为关键的,表连接顺序的选择要素是尽可能多地过滤掉无效的记录。因此过滤条件较多的表,最终过滤效果最好的表会排在最前面
判断哪个条件更强。通过分析每张表上的所有过滤条件过滤后的结果集的大小,就可以找出最佳的那张表;
确定了驱动表后,就要考虑驱动表的访问路径了
选定了驱动表后,就需要分析驱动表先和哪张表连接比较好。选择的原则是,能够尽可能多地过滤掉数据,连接后返回结果集较小的优先考虑;



该贴被lei.wang编辑于2015-3-23 15:43:08



赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论