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. java判断字符串中是否包含中文 过滤中文

    package com.test; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Test ...

  2. nine

    [拉肚子] 1.原因:消化不良.不良刺激.进食不当的食物/病毒 2.调理: 消化不良引起的:妈咪爱:山药粥:少食多餐 不良刺激引起的:不要受惊受凉过热

  3. py库: jieba (中文词频统计) 、collections (字频统计)、WordCloud (词云)

    先来个最简单的: # 查找列表中出现次数最多的值 ls = [1, 2, 3, 4, 5, 6, 1, 2, 1, 2, 1, 1] ls = ["呵呵", "呵呵&qu ...

  4. oryx 分离&集成

    公司需要用到在线的流程编辑器,我研究了下activiti,activiti-explorer 是一个 web流程编辑工具,根据我了解到的情况. activiti-explorer web流程编辑工具 ...

  5. Tomcat相关的配置和设置

    1.Tomcat环境配置方法见百度文库.略. 2.查看. webapps:所有课执行的WEB项目都放在次目录中 work:此文件保存了所有临时文件,当开发中发现一个程序无法正确执行的时候,就可以考虑将 ...

  6. 11.vim编辑器命令

    VI中的多行删除与复制   方法一: 单行删除,:1(待删除行)d 多行删除 ,:1,10d   方法二: 光标所在行,dd 光标所在行以下的N行,Ndd   方法1: 光标放到第6行, 输入:2yy ...

  7. JavaScript:今天是今年第几周?

    用js实现,今天是今年第几周? 基本思路: 1.当前时间 - 今年1月1日0时,拿到时间差(毫秒数) 2.时间差/7天毫秒数,向上取整 var d = new Date('2018-01-01 00: ...

  8. NativeClient开发指南

    https://blog.csdn.net/column/details/24458.html

  9. netty ChannelOption

    项目中用到很多netty,配置了各种不同的ChannelOption优化项,不同的配置对于在高并发情况下的性能有不小的影响 首先看下全部项目,参考下这篇文章,虽然不全 https://www.cnbl ...

  10. C# 如何利用反射,将字符串转化为类名并调用类中方法

    首先,先随便创建一个测试类 <span style="font-family:Microsoft YaHei;font-size:18px;">public class ...