日期:2014-05-17  浏览次数:20863 次

请教这个package执行巨慢的原因
环境为solaris上的oracle10gr2。
有如下package的Procedure(代码附后),过程内部为三个merge into 语句,现将三个语句复制出来依次执行(在同一个事物中),三段执行都很快,总时间不超过0.5秒,但是如果调用这个过程,则第一个merge花费1秒不到,而后两个merge花费2分钟以上;将三个merge删除,使得该过程中仅余一个merge执行,发现仅余第一个merge是花费1秒不到,但是如果是后两个的任一个的话则花费2分钟左右;
不知道这个问题改如何处理,从哪方面着手,请各位达人指点。

注:实际执行环境中join操作的各个表中约有1w条左右的数据,user_、ip都是主键,channel、day_与ip或者user_共同组成主键;解释计划的耗费均在70左右;



------解决方案--------------------
问题解决了没?建议从头来过。
不知道你是否在线,可以联系我的MSN:sancuo@hotmail.com
------解决方案--------------------
探讨
引用:

1,问下,你的单个merge之间的select语句的基表都是在一个数据库上吗?

2,建议改下业务规则,为什么要用merge呢,可以有很多方法替代mer…


1:我这是一个数据汇总的程序,这部分是汇总一个小时内的用户ip数什么的的,是在同一个数据库中的;

2:我原来是用update的相关查询,但是速度完全受不了,解释计划cost在200以上,同样的环境执行一次得要2分钟;
我是java程序员,原来…