1.关于exists和in

in是循环的方式,在内存中处理,

exists是执行数据库查询,

select tpd.personaccountid,sum(nvl(tpd.CREDIT_SUM, 0)) as bjsr, sum(nvl(tpd.INTEREST_INCOME, 0)) as bjsr, sum(nvl(tpd.DEBIT_SUM, 0)) as bjzc from TGP_PERSON_DETAIL tpd
left join TAP_FUNDBUSINESS tfb
on tpd.FUNDBUSINESS_ID = tfb.FUNDBUSINESS_ID
where tpd.PERSONACCOUNTID
in (
select personaccountid from TGP_PERSONACCOUNT pa
left join tgp_person person
on pa.personid = person.personid
where person.zjhm = '330903196209160251'
) group by tpd.personaccountid

执行100次 耗时0.017S左右

select tpd.personaccountid,sum(nvl(tpd.CREDIT_SUM, 0)) as bjsr, sum(nvl(tpd.INTEREST_INCOME, 0)) as bjsr, sum(nvl(tpd.DEBIT_SUM, 0)) as bjzc from TGP_PERSON_DETAIL tpd
left join TAP_FUNDBUSINESS tfb
on tpd.FUNDBUSINESS_ID = tfb.FUNDBUSINESS_ID
where
exists (
select personaccountid from (select personaccountid from TGP_PERSONACCOUNT pa
left join tgp_person person
on pa.personid = person.personid
where person.zjhm = '330903196209160251') a
where tpd.personaccountid = a.personaccountid
) group by tpd.personaccountid

执行100次 耗时0.020S左右

以上都为SELECT FORM a IN b(OR EXISTS B)  B中数据少的时候 采用IN 多的时候采用EXISTS

select tpd.personaccountid,sum(nvl(tpd.CREDIT_SUM, 0)) as bjsr, sum(nvl(tpd.INTEREST_INCOME, 0)) as bjsr, sum(nvl(tpd.DEBIT_SUM, 0)) as bjzc from TGP_PERSON_DETAIL tpd
left join TAP_FUNDBUSINESS tfb
on tpd.FUNDBUSINESS_ID = tfb.FUNDBUSINESS_ID
HAVING
exists (
select personaccountid from (select personaccountid from TGP_PERSONACCOUNT pa
left join tgp_person person
on pa.personid = person.personid
where person.zjhm = '330903196209160251') a
where tpd.personaccountid = a.personaccountid
) group by tpd.personaccountid

执行100次 耗时2.36S左右

因此先筛选数据再分组 效率更高

oracle优化技巧及实例(总结)的更多相关文章

  1. 数据库之Oracle优化技巧(一)

    数据库之Oracle优化技巧(一) 1.where子句中的连接顺序 在Oracle数据库中,where子句的执行顺序是自下而上进行解析,根据这个原理,表之间的连接必须写在其他where条件之前,那些可 ...

  2. Oracle优化技巧

    现观察线上系统运行发现,线上某些业务查询存在等待时间长问题,后核查发现,部分问题出现在对数据库操作上Cost大部分时间,后根据网上各位前辈提供的优化技巧解决大部分问题,现写下本篇文章,一来巩固加深自己 ...

  3. 数据库之Oracle优化技巧(二)

    1.通过内部函数提高 SQL 效率 复杂的 SQL 往往牺牲了执行效率. 能够掌握上面的运用函数解决问题的方法在实际 工作中是非常有意义的 . 2.使用表的别名(Alias) 当在 SQL 语句中连接 ...

  4. Oracle SQL性能优化技巧大总结

    http://wenku.baidu.com/link?url=liS0_3fAyX2uXF5MAEQxMOj3YIY4UCcQM4gPfPzHfFcHBXuJTE8rANrwu6GXwdzbmvdV ...

  5. Oracle SQL 性能优化技巧

    Select语句完整的执行顺序: SQL Select语句完整的执行顺序: 1. from子句组装来自不同数据源的数据: 2.where子句基于指定的条件对记录行进行筛选: 3.group by子句将 ...

  6. SQL优化技巧

    我们开发的大部分软件,其基本业务流程都是:采集数据→将数据存储到数据库中→根据业务需求查询相应数据→对数据进行处理→传给前台展示.对整个流程进行分析,可以发现软件大部分的操作时间消耗都花在了数据库相关 ...

  7. 数据库的规范和SQL优化技巧总结

    现总结工作与学习中关于数据库的规范设计与优化技巧 1.规范背景与目的 MySQL数据库与 Oracle. SQL Server 等数据库相比,有其内核上的优势与劣势.我们在使用MySQL数据库的时候需 ...

  8. Oracle优化总结

    本文主要从大型数据库ORACLE环境四个不同级别的调整分析入手,分析ORACLE的系统结构和工作机理,从九个不同方面较全面地总结了ORACLE数据库的优化调整方案.关键词 ORACLE数据库 环境调整 ...

  9. Java程序性能优化技巧

    Java程序性能优化技巧 多线程.集合.网络编程.内存优化.缓冲..spring.设计模式.软件工程.编程思想 1.生成对象时,合理分配空间和大小new ArrayList(100); 2.优化for ...

随机推荐

  1. RESTful Loads

    RESTful 一种软件架构风格.设计风格,而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制. 概述 ...

  2. SpringBoot项目单元测试

    关于SpringBoot的单元测试,描述一下三种单元测试的方式. 1.约定 单元测试代码写在src/test/java目录下单元测试类命名为*Test,前缀为要测试的类名 2. 使用mock方式单元测 ...

  3. Node核心模块

    在Node中,模块主要分两大类:核心模块和文件模块.核心模块部分在 Node 源代码的编译过程中,编译进了二进制执行文件.在 Node 进启动时,部分核心模块就被直接加载进内存中,所以这部分核心模块引 ...

  4. html/css/js-个人容易忘的一些属性

    1.当div里面的文字超过给定div给定的宽度,div里面的文字自动换行 word-break:break-all:会截断该行最后的单词 word-wrap:break-word:不会截断,该行长度最 ...

  5. 推导式_zip

    zip ''' 功能: 每次分别拿出一个iter内的元素, 配对组成元祖, 放入迭代器, 如果元素不够配对, 将舍弃后面的元素 参数:n个iterable 返回:迭代器 ''' # (1) 用zip形 ...

  6. 从OsChina Git下载项目到MyEclipse中

    前提是,拥有权限下载 1.进入MyEclipse,点击File-->Import,选择Git,点击“Next”,如下图: , 2.选择“URI”,点击"Next" 3.输入项 ...

  7. superrvisor application config ini

    1. zookeeper [program:zookeeper] environment = JAVA_HOME="/opt/jdk1.8.0_191" process_name= ...

  8. Vue中table合并单元格用法

    <table> <tr> <th>地名</th> <th>结果</th> <th>人名</th> < ...

  9. 新部署tomcat,An error occurred at line: [1] index_jsp.java

    环境: centos6.5 32位 oracle jdk 1.8 tomcat 7 问题: yum install tomcat后,返回如下错误: [root@centos]~# curl -v ht ...

  10. IDEA常用快捷键,收藏以备后用

    IntelliJ Idea 常用快捷键列表 Ctrl+Shift + Enter,语句完成“!”,否定完成,输入表达式时按 “!”键Ctrl+E,最近的文件Ctrl+Shift+E,最近更改的文件Sh ...