oracle优化技巧及实例(总结)
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优化技巧及实例(总结)的更多相关文章
- 数据库之Oracle优化技巧(一)
数据库之Oracle优化技巧(一) 1.where子句中的连接顺序 在Oracle数据库中,where子句的执行顺序是自下而上进行解析,根据这个原理,表之间的连接必须写在其他where条件之前,那些可 ...
- Oracle优化技巧
现观察线上系统运行发现,线上某些业务查询存在等待时间长问题,后核查发现,部分问题出现在对数据库操作上Cost大部分时间,后根据网上各位前辈提供的优化技巧解决大部分问题,现写下本篇文章,一来巩固加深自己 ...
- 数据库之Oracle优化技巧(二)
1.通过内部函数提高 SQL 效率 复杂的 SQL 往往牺牲了执行效率. 能够掌握上面的运用函数解决问题的方法在实际 工作中是非常有意义的 . 2.使用表的别名(Alias) 当在 SQL 语句中连接 ...
- Oracle SQL性能优化技巧大总结
http://wenku.baidu.com/link?url=liS0_3fAyX2uXF5MAEQxMOj3YIY4UCcQM4gPfPzHfFcHBXuJTE8rANrwu6GXwdzbmvdV ...
- Oracle SQL 性能优化技巧
Select语句完整的执行顺序: SQL Select语句完整的执行顺序: 1. from子句组装来自不同数据源的数据: 2.where子句基于指定的条件对记录行进行筛选: 3.group by子句将 ...
- SQL优化技巧
我们开发的大部分软件,其基本业务流程都是:采集数据→将数据存储到数据库中→根据业务需求查询相应数据→对数据进行处理→传给前台展示.对整个流程进行分析,可以发现软件大部分的操作时间消耗都花在了数据库相关 ...
- 数据库的规范和SQL优化技巧总结
现总结工作与学习中关于数据库的规范设计与优化技巧 1.规范背景与目的 MySQL数据库与 Oracle. SQL Server 等数据库相比,有其内核上的优势与劣势.我们在使用MySQL数据库的时候需 ...
- Oracle优化总结
本文主要从大型数据库ORACLE环境四个不同级别的调整分析入手,分析ORACLE的系统结构和工作机理,从九个不同方面较全面地总结了ORACLE数据库的优化调整方案.关键词 ORACLE数据库 环境调整 ...
- Java程序性能优化技巧
Java程序性能优化技巧 多线程.集合.网络编程.内存优化.缓冲..spring.设计模式.软件工程.编程思想 1.生成对象时,合理分配空间和大小new ArrayList(100); 2.优化for ...
随机推荐
- Javascript 2.4
---恢复内容开始--- 弱类型语言,可以随意修改变量的数据类型 "..."中的字符串包含 " 时需要转义字符 \" '...'中的而字符串包含 ' 时需要转 ...
- K2路由器刷机教程
http://blog.sina.com.cn/s/blog_dc642faa0102x1on.html 方法:先降价——刷入breed——刷入固件 1.K2路由固件版本为V22.4.5.39 / V ...
- oracle-企业信息化
http://www.itpub.net/thread-1873735-1-1.html OCP考试心得 http://blog.csdn.net/rlhua/article/detai ...
- Eslint 能自动格式化代码,为什么还要用 Prettier?
ESLint 与 Prettier 区别: ESLint:代码检测工具:可以检测出你代码中潜在的问题,比如使用了某个变量却忘记了定义: Prettier:代码格式化工具:作为代码格式化工具,能够统一你 ...
- Day 12 开放封闭原则,装饰器初识
nonlocal关键字 # 作用:将 L 与 E(E中的名字需要提前定义) 的名字统一# 应用场景:如果想在被嵌套的函数中修改外部函数变量(名字)的值# 案例:def outer(): n ...
- C# Windows Service 基础
Windows Service这一块并不复杂,但是注意事项太多了,网上资料也很凌乱,偶尔自己写也会丢三落四的.所以本文也就产生了,本文不会写复杂的东西,完全以基础应用的需求来写,所以不会对Window ...
- 【C++】vector用法详解
转自:https://blog.csdn.net/fanyun_01/article/details/56842637#commentBox 一.简介 C++ vector类为内置数组提供了一种替代表 ...
- git之sourceTree使用github和码云的代码小结
16.使用git出现的错误记录 15. Permission denied (publickey)错误: git远程库与本地库同步 git设置ssh公钥 Bad escape character ' ...
- 为运行Microsoft Dynamics CRM 异步处理服务指定账户没有性能计数器权限
CRM 2016 安装 为运行Microsoft Dynamics CRM 应用程序指定账户没有性能计数器权限 为运行Microsoft Dynamics CRM 异步处理服务指定账户没有性能计数器权 ...
- 【亲测】502 Bad Gateway 怎么解决?
502 Bad Gateway 怎么解决? 1.什么是502 badgateway 报错 简单来说 502 是报错类型代码,bad gateway 错误的网关. 2.产生错误的原因 连接超时 具体原因 ...