发现生产环境的Oracle数据库cpu使用率上升超过70%,其中一条查询语句达到每秒调用40多次。现在我们来观摩下该语句:

select t.id,t.level,t.policy, t.type,t1.point,t2.channel,t3.user from t_wlf_charge t, t_wlf_point t1, t_wlf_channel t2,

(select t4.id,t4.phone user from t_wlf_user t4 where t4.phone=?

union select t5.id,t5.city user from t_wlf_city t5 where t5.city=? or t5.city=0) t3

where t.id=t1.id and t.id=t2.id and t.id=t3.id and t.code=? and 

(t1.point=NVL(?,t1.point) or t1.point=0) and (t2.channel=? or t2.channel=0)

order by t.type asc

  开始考虑缓存,但发现关联查询缓存命中率是个问题,而且本身重复查询率就低。最后决定通过视图优化以上1主表+5从表的关联查询,先创建视图:

create or replace view v_wlf_charge as select 

t.id,t.level,t.policy, t.type,t.code,nvl(t1.point,0) point,nvl(t2.channel,0) channel, nvl(t3.phone,0) phone,nvl(t4.city,0) city from

t_wlf_charge t left join t_wlf_point t1 on t.id=t1.id

left join t_wlf_channel t2 on t.id=t2.id

left join t_wlf_phone t3 on t.id=t3.id

left join t_wlf_city t4 on t.id=t4.id

where t.id is not null 

  再用这条脚本查:

select id,level,policy, type,point,channel,phone as user from v_wlf_charge

where code=? and point in(0,?) and channel in (0,?) and phone in (0,?) and city in (0,?)

order by type asc

Oracle查询脚本优化的更多相关文章

  1. MYSQL 查询脚本优化

    业务需要,优化一段多表查询脚本. 总结下来,采取以下步骤. 分析语句 分析语句,了解逻辑,是否可以先优化逻辑. 查询语句的查询范围,是否是全表查询,如果是,尽量优化为按索引查询. 查看语句数量,是否有 ...

  2. Oracle 查询性能优化(转)

    原则一:注意WHERE子句中的连接顺序: ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHER ...

  3. oracle查询性能优化

    原文http://www.cnblogs.com/cnjava/archive/2013/02/28/2937699.html 讲解的oracle数据库面对大数据如何优化查询.

  4. oracle查询SQL优化相当重要

    如果表中的时间字段是索引,那么时间字段不要使用函数,函数会使索引失效. 例如: select * from mytable where trunc(createtime)=trunc(sysdate) ...

  5. Oracle 查询性能优化实践

      1.索引使用原则   不要对索引使用全模糊,但是 LIKE 'asdf%'是可以的,即不要Contains,可用StartWith 不要对索引进行函数,表达式操作,或者使用is null判断,否则 ...

  6. Oracle的分页查询语句优化

    Oracle的分页查询语句基本上可以按照本文给出的格式来进行套用. (一)   分页查询格式: SELECT * FROM  ( SELECT A.*, ROWNUM RN  FROM (SELECT ...

  7. Oracle DBA 必须掌握的 查询脚本:

    Oracle  DBA 必须掌握的 查询脚本: 0:启动与关闭 orcle 数据库的启动与关闭 1:连接数据库 2:数据库开启状态的实现步骤:       2-1:启动数据库           2- ...

  8. 基于Oracle的SQL优化(社区万众期待 数据库优化扛鼎巨著)

    基于Oracle的SQL优化(社区万众期待数据库优化扛鼎巨著) 崔华 编   ISBN 978-7-121-21758-6 2014年1月出版 定价:128.00元 856页 16开 编辑推荐 本土O ...

  9. 转://从一条巨慢SQL看基于Oracle的SQL优化

    http://mp.weixin.qq.com/s/DkIPwbDKIjH2FMN13GkT4w 本次分享的内容是基于Oracle的SQL优化,以一条巨慢的SQL为例,从快速解读SQL执行计划.如何从 ...

随机推荐

  1. spring与memcached整合[转]

    1, 开始肯定是下载需要的文件了,这里就下载附件里的文件就好,我也是在网上down的,放这好找.然后我们安装一下Memcache服务器,找到解压的memcached-1.2.1-win32,启动cmd ...

  2. redis主从、集群、哨兵

    redis的主从.集群.哨兵 参考: https://blog.csdn.net/robertohuang/article/details/70741575 https://blog.csdn.net ...

  3. 支付宝app支付java后台流程、原理分析(含nei wang chuan tou)

    java版支付宝app支付流程及原理分析 本实例是基于springmvc框架编写     一.流程步骤         1.执行流程           当手机端app(就是你公司开发的app)在支付 ...

  4. 监控系统信息模块psutil

    About psutil (python system and process utilities) is a cross-platform library for retrieving inform ...

  5. LeetCode第[42]题(Java):Trapping Rain Water (数组方块盛水)——HARD

    题目:接雨水 难度:hard 题目内容: Given n non-negative integers representing an elevation map where the width of ...

  6. LeetCode第[36]题(Java):Valid Sudoku

    题目:有效的数独表 难度:Medium 题目内容: Determine if a 9x9 Sudoku board is valid. Only the filled cells need to be ...

  7. GBDT 总结文档

    在做阿里的o2o优惠券预测的时候学习了GBDT.听闻GBDT的威力,自然要学习学习. 接下来从以下几个方面记录下我对于GBDT的理解. GBDT的用途,优势 GBDT的结构和算法流程 GBDT如何训练 ...

  8. TimeSpan 结构(struct)

    TimeSpan 是结构类型(struct),即值类型,可以通过两个DateTime(struct)之差来获得,如下例子: DateTime departure = new DateTime(2010 ...

  9. c#实现验证某个IP地址是否能ping通

    using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Net ...

  10. Ajax基础(四)--dom元素简单操作

    1 //js对dom元素的操作 //添加dom元素 var param = document.createElement("p"); var node = document.cre ...