记一次oracle 优化过程

来源:互联网 发布:java时间转时间戳 编辑:程序博客网 时间:2024/06/01 10:07

可能很多大牛都知道这个方法,但我是头回遇到,

因为项目原因,要写很多查询sql,对速度有要求,所以很注重sql语句的优化。

像使用left join 速度会快一些等等一些算是比较常见的方法吧。

近两天做自测时发现了一个问题,同样一条语句,加了一个条件竟然速度慢了那么多,本身是一个求汇总的sql语句,查全部单位的,和查一家单位的速度简直差了好几个级别,我记得好像是一分半钟的速度,关联了大概10多个表吧,这速度简直慢的让人发指,是绝对不能接受,所以我开始找原因,

查询同时有合计的sql ,我发现合计的sql速度很快,不到一秒就迅速的查出来了,而这条合计语句与之前那个语句水同的地方就是在原有语句的基础 上又封装了一层,所以,机智如我,在这条比较慢的语句也封装了一层,果然,速度和合计的几乎一样快。至于为什么会这样,我还没有查,不知道其中的原理。

对了,项目组有一个技术比较好的人写的sql也有这种情况,我之前还纳闷为什么要这样多此一举的写,应该也是因为这样写速度比较快吧。


优化前大概意思是这样:

select org_id , sum(amount)  as amount ,max(in_date) as in_date....  from XX group by org_id 

优化后大概是这样:

select org_id sum(amount)  as amount , max( in_date ) as in_date  ..... from 

(  select org_id , sum(amount)  as amount ,max(in_date) as in_date....  from XX group by org_id  ) sm 

group by org_id 


0 0
原创粉丝点击