1、并行和强制走索引的用法

SELECT/*+parallel(T 16) parallel(B 16) parallel(D 16)*/
 T.POLICY_NO,
 T.DEPARTMENT_CODE,
 T.PLAN_CODE,
   FROM EPCIS_AUTO_POLICY_BASE_INFO T ,
       EPCIS_AUTO_POLICY_VEHICLE_INFO B,
       EPCIS_AUTO_A_PRE_MID_RESULT D
 WHERE T.POLICY_NO = B.POLICY_NO
   AND T.APPLY_POLICY_NO = D.APPLY_POLICY_NO(+)
   AND T.LAST_BEGIN_DATE >=
       ADD_MONTHS(TRUNC(TO_DATE('20151101', 'YYYYMMDD'), 'YYYY'), 9)
   AND T.LAST_BEGIN_DATE <
       LEAST(TO_DATE('20151201', 'YYYYMMDD'),
             ADD_MONTHS(TRUNC(TO_DATE('20151101', 'YYYYMMDD'), 'YYYY'), 12))
   AND T.UNDERWRITE_TIME < TO_DATE('20151201', 'YYYYMMDD')

--强制走索引

seg是表的别名

/*+INDEX(SEG IDX_T_RES_ALLOSEG_ALLOID)*/

2、在用分析函数的时候一定要注意,再外面嵌套子查询的时候,会导致执行计划改变

虽然里层的sql单独查询很快,但是一旦套嵌上了子查询后,执行计划就会变化,并不是说只是的单纯的将里面的结果集外面再查询,否则也不会一直查不出来、、、

这种情况的原因是里层的where条件中某些条件需要查较大的表;可考虑优化里层的where条件;

结论:

  只要以后用到分析函数的,where子句的的 in 或者not in 都换成 exists;  

select * from (
select
t.in_calling_nbr as calling_nbr,
t.in_called_nbr as called_nbr,
t1.cp_name as cp_name,
t2.cn_simple_name as cn_simple_name,
t2.insert_code as insert_code,
decode(t.in_type,1,'豆豆大作战',2,'抢红包',3,'和教育豆豆',4,'随机抢红包') as jiemu_type,
'欧飞系统维护或者其他情况导致充值失败~~' as err_msg,
to_number(t.in_fee) as ordercash,
row_number()over (partition by t.in_type,t.in_calling_nbr,t.in_called_nbr,t.in_logdate order by t2.insert_code desc) as r_num
from autorecharge.recharge_log@ivrpro t,med_new.T_CP_CHANNLE_INFO@ivrpro t1,ani.ani_sp_service@ivrpro t2
where t.in_logdate >=date'2017-03-28'
and t.in_logdate <date'2017-03-29'
and t.flag = 1
and not exists (select 1 from (select * from autorecharge.oufei_charge_orderinfo_log@ivrpro
union all
select * from autorecharge.oufei_charge_orderinfo@ivrpro) m
where m.sporder_id = t.sporder_id
and m.create_date >= date'2017-03-28') and substr(t.in_called_nbr,1,length(t2.insert_code)) = t2.insert_code
and t.in_called_nbr = t1.channle_id
)
where r_num =1 ;

 

优化后:

 Oracle中用一个表的数据更新另一个表的数据

①、普通的数据量较小时:

update tab1 set val=(select val from tab2 where tab1.id=tab2.id) [where exists (select 1 from tab2 where tab1.id=tab2.id)];

②、数据量比较多的话:

  merge终极版:

  merge into tab1  using  (select * from tab2 x  where x.rowid =  (select max(y.rowid) from tab2 y  where x.id = y.id)) tab2  on(tab1.id=tab2.id)  when

  matched then  update set tab1.val = tab2.val

oracle_效率优化的更多相关文章

  1. php程序效率优化的一些策略小结

    php程序效率优化的一些策略小结   1.在可以用file_get_contents替代file.fopen.feof.fgets等系列方法的情况下,尽量用 file_get_contents,因为他 ...

  2. jquery选择器效率优化问题

    jquery选择器效率优化问题   jquery选择器固然强大,但是使用不当回导致效率问题: 1.要养成将jQuery对象缓存进变量的习惯 //不好的写法 $('#btn').bind("c ...

  3. php性能效率优化

    [size=5][color=Red]php性能效率优化[/color][/size] 最近在公司一边自学一边写PHP程序,由于公司对程序的运行效率要求很高,而自己又是个新手,一开始就注意程序的效率很 ...

  4. Jenkins Kubernetes Slave 调度效率优化小记

    Jenkins K8S Slave 调度效率优化 by yue994488@126.com 使用kubernetes为测试工具Gatling进行大规模压测,压测期间发现Jenkins调度压测实例较慢, ...

  5. 见招拆招-PostgreSQL中文全文索引效率优化

    * { color: #3e3e3e } body { font-family: "Helvetica Neue", Helvetica, "Hiragino Sans ...

  6. C#效率优化(1)-- 使用泛型时避免装箱

    本想接着上一篇详解泛型接着写一篇使用泛型时需要注意的一个性能问题,但是后来想着不如将之前的详解XX系列更正为现在的效率优化XX系列,记录在工作时遇到的一些性能优化的经验和技巧,如果有什么不足,还请大家 ...

  7. Unity3d代码及效率优化总结

    1.PC平台的话保持场景中显示的顶点数少于200K~3M,移动设备的话少于10W,一切取决于你的目标GPU与CPU. 2.如果你用U3D自带的SHADER,在表现不差的情况下选择Mobile或Unli ...

  8. 关于多层for循环迭代的效率优化问题

    关于多层for循环迭代的效率优化问题 今天笔试的时候遇到这么一道题目  说有上面这么循环嵌套  .问怎么优化 并说明原因.     for(int i = 0 ; i < 1000 ;i++){ ...

  9. 【mysql】mysql统计查询count的效率优化问题

    mysql统计查询count的效率优化问题 涉及到一个问题 就是 mysql的二级索引的问题,聚簇索引和非聚簇索引 引申地址:https://www.cnblogs.com/sxdcgaq8080/p ...

随机推荐

  1. curd——5

    curd——5 SELECT area_id  FROM 16tree.ts_area  where pid=0; <?php //1可以防止注入$db = Yii::app()->db; ...

  2. 简单ATM机功能实现及感想

    感想:  在那一天下午气喘吁吁的上了六楼 在建民的课上 都要带电脑 第一次上这样的课,每一次都是个段子 ,这一次考试是学前考试,什么也不知道 ,但是通过百度, 发现JAVA有很多还都和C语言相似的地方 ...

  3. hive安装教程本地模式

    1.安装模式介绍: Hive官网上介绍了Hive的3种安装方式,分别对应不同的应用场景. a.内嵌模式(元数据保村在内嵌的derby种,允许一个会话链接,尝试多个会话链接时会报错) b.本地模式(本地 ...

  4. uri,url和urn的区别以及URLEncoder

    java.net.URL类不提供对标准RFC2396规定的特殊字符的转义,因此需要调用者自己对URL各组成部分进行encode.而java.net.URI则会提供转义功能.因此The recommen ...

  5. PowerDesigner 把Comment写到name中 和把name写到Comment中 pd7以后版本可用

    在使用PowerDesigner对数据库进行概念模型和物理模型设计时,一般在NAME或Comment中写中文,在Code中写英文.Name用来显 示,Code在代码中使用,但Comment中的文字会保 ...

  6. day33-常见内置模块二(hashlib、shutil、configparse)

    一.hashlib算法介绍 Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 1.什么是摘要算法呢? 摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一 ...

  7. redis如何清除所有的key

    redis比memcache好的地方之一,如果memcache,恐怕就得关掉重启了. 1 使用cli FLUSHDB 清除一个数据库,FLUSHALL清除整个redis数据. 2 使用shell re ...

  8. BBS--功能4:个人站点页面设计(ORM跨表与分组查询)

    查询: 日期归档查询 1 date_format ============date,time,datetime=========== create table t_mul_new(d date,t t ...

  9. Context namespace element 'annotation-config' and its parser class [org.springframework.context.annotation.AnnotationConfigBeanDefinitionParser] are only available on JDK 1.5 and higher

    Context namespace element 'annotation-config' and its parser class [org.springframework.context.anno ...

  10. Zabbix监控Zookeeper健康状况

    首先最简单的是监听服务端口,在zabbix界面直接添加监控项 item: zookeeper.status key: net.tcp.listen[2181]   ZooKeeper监控要点:   内 ...