CBO(基于规则的优化方式)模式下优化器模式的选择

        对于一种功能单一的数据库系统来讲,设置一个数据库优化器模式就可以了,比如olap系统,绝大多数上运行的是报表作业

执行的大多是sql的聚合类函数   比如group by 函数,这时候优化器模式设置成all_rows模式就可以了,但是如果此数据库上

还运行着一些用户查询功能,比如查询功能是分页的,如果优化器模式设置成all_rows模式  就会导致查询功能非常的慢

针对这种情况   我们可以在开发阶段考虑这种情况,我们开发人员可以在sql里使用Hint的方式来讲优化器转换成first_rows

这样就可以大大的提高数据的处理速度

比如:

explain plan for select * from(select /*+first_rows(10)*/ a.*,rownum rnum from (select /*+first_rows(10)*/ a,b from t1 order by a)a where rownum<=10) where rnum>=1;

select * from table(dbms_xplan.displan);



对于绑定变量:

对于olap(在线分析系统,通常指的是这样的系统,用户联系少  但是数据库存放着海量数据,sql语句基本上是用户产生报表的大查询)不适合绑定变量

对于oltp(用户并发数很大,用户请求十分密集,并且请求的这些sql是大多可以重复使用的,如果这样长千上万的sql一遍又一遍的被语法解析,语义分析,生成执行计划,这会对数据库造成很大的压力,如果一个sql被执行一遍后就被缓存放到内存中(共享池),以后成千上百的用户使用这个sql解析后的结果,那么执行效率将会大大的提高)适合使用绑定变量



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值