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. spark sql 中的结构化数据

    1. 连接mysql 首先需要把mysql-connector-java-5.1.39.jar 拷贝到 spark 的jars目录里面: scala> import org.apache.spa ...

  2. leetcode993

    public class Node { public int CurNode; public int FatherNode; public int Layer; } public class Solu ...

  3. Linux 指令(一)文件/目录操作

    1. 创建目录 mkdir 格式 mkdir [OPTION]... DIRECTORY... 选项 -p 递归创建 -v 创建时提示 例: root@ubuntu:/home/eko/x# mkdi ...

  4. PHP下进行XML操作(创建、读取)

    PHP下可以使用DOMDocument类对XML或者HTML文件进行读写操作 更为简单的方法使用simpleXML类操作XML DOM节点分为 元素节点 属性节点 值节点 注释节点 根节点(docum ...

  5. Activity启动模式(lauchMode)

    Activity启动模式(lauchMode) 本来想针对Activity中的启动模式写篇文章的,后来网上发现有人已经总结的相当好了,在此直接引用过来,并加上自己的一些理解,在此感谢原作者. 文章地址 ...

  6. MySQL创建只读账号

    应用场景:只要公司有数据团队的,那免不了让这帮家伙把全公司的数据库数据都摸一遍,但是要是直接把root用户给了他们,未免有点危险,于是只能给这帮人设权限,一般而言,他们只是做读操作,既然做读操作,那么 ...

  7. UI5-学习篇-13-Eclipse 开发UI5应用

    1.Eclipse环境配置及组件安装 UI5-学习篇-1-Eclipse开发工具及环境搭建 2.创建项目 3.设置代理映射 打开WebContent->WEB-INF->web.xml文件 ...

  8. python 连接 Oracle 乱码问题(cx_Oracle)

    用python连接Oracle是总是乱码,最后发现时oracle客户端的字符编码设置不对. 编写的python脚本中需要加入如下几句: import os os.environ['NLS_LANG'] ...

  9. Spark读取配置(转)

    转自:https://github.com/keepsimplefocus/spark-sourcecodes-analysis/blob/master/markdowns/Spark%E8%AF%B ...

  10. JAVA_Package

    Javaの名前空間の仕組みの1つにパッケージがあります.大規模開発では必須の概念です.また.他人の作ったコードの再利用という観点でも.パッケージを正しく活用する必要があります. ・完全修飾名:パッケー ...