Oracle数据库使用Analyze提升sql性能

如果你不使用analyze完成sql优化,将意味着:你拒绝使用数据库的查询优化器,也失去了使用优化连接的机会。假设你创建了一张拥有100万条记录的临时表,如果不对其进行分析,那么优化器将无法从现有的线索中获取表中真正的内容,于是它只能决定使用嵌套循环连接来一行行地扫描数据表,随着数据集的增长,你的数据库性能会越来越差。

ORACLE数据库的PL/SQL语句执行的优化器,有基于代价的优化器(CBO)和基于规则的优化器(RBO)。

RBO的优化方式,依赖于一套严格的语法规则,只要按照规则写出的语句,不管数据表和索引的内容是否发生变化,不会影响PL/SQL语句的"执行计划"。

CBO自ORACLE7版被引入,ORACLE自7版以来采用的许多新技术都是只基于CBO的,如星型连接排列查询,哈希连接查询,反向索引,索引表,分区表和并行查询等。CBO计算各种可能"执行计划"的"代价",即cost,从中选用cost最低的方案,作为实际运行方案。各"执行计划"的cost的计算根据,依赖于数据表中数据的统计分布,ORACLE数据库本身对该统计分布是不清楚的,须要分析表和相关的索引,才能搜集到CBO所需的数据。要想使用好CBO,使SQL语句发挥最大效能,必须保证统计数据的及时性。

统计信息的生成可以有完全计算法和抽样估算法。SQL例句如下:

完全计算法:analyze table abc compute statistics;
    抽样估算法(抽样20%): analyze table abc estimate statistics sample 20percent;

    可以通过定时任务方式,定时通过analyze命令完成数据库中相应表内容的分析处理。

Normal
0

7.8 磅
0
2

false
false
false

EN-US
ZH-CN
X-NONE

/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-font-kerning:1.0pt;}

Normal
0

7.8 磅
0
2

false
false
false

EN-US
ZH-CN
X-NONE

/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-font-kerning:1.0pt;}

最新文章

  1. quick-cocos2d-x :加入学习
  2. 解决hibernate删除时的异常
  3. DOM对象模型四大基本接口
  4. Android 5.1 AOSP 源码获取
  5. SQL中char、varchar、nvarchar
  6. Google AppEngine 创建的例子
  7. tomcat安全配置之禁用Directory Listing
  8. 如果通过adb查看当前显示的activity
  9. SQLite中使用CTE巧解多级分类的级联查询
  10. 什么时候该选用Xamarin?
  11. MySQL自定义函数与存储过程
  12. 小程序app.onLaunch中获取用户信息,index.onLoad初次载入时取不到值的问题
  13. 解决jenkins构建job报错“NoClassDefFoundError” in jenkins/scm/RunWithSCM问题
  14. jQuery 选择具有特殊属性的元素
  15. 实现我的第一个Java程序
  16. 策略模式在ThreadpoolExecutor中的应用
  17. sudo command
  18. vue router 懒加载实现
  19. 微信小程序 - 使用字体图标(阿里云库)
  20. [MySQL-笔记]创建高性能索引

热门文章

  1. 树莓派之OLED12864视频播放—BadApple
  2. 2014秋C++第5周项目1參考-见识刚開始学习的人常见错误
  3. Python 的函数
  4. lucene 搜索优化,个人实战经验总结
  5. 在Telerik for silverlight控件radtreeview中如何通过路径得到节点(转载)
  6. unity, Invoke延迟执行
  7. Linux Tools
  8. 使用sklean进行多分类下的二分类
  9. size_t ssize_t loff_t 的区别
  10. raw flash vs FTL