PB开发的应用程序自动发出对sys.ALL_SYNONYMS查询的问题。
相关的帖子如下:
http://blog.itpub.net/16396910/viewspace-1029636
这个现象估计只要是pb开发的应用程序都会遇到问题。
表现是:
业务sql放在plsql-dev中执行很快,但是业务sql通过业务软件(或者通过pb运行)执行却很慢,
慢就慢在pb自动发出的对sys.ALL_SYNONYMS的查询。而该查询的执行计划不好,这样就直接拖慢了应用软件的响应时间。
该问题,oracle 其实是有记录的,见如下的文章:
Selects Against ALL_SYNONYMS Perform Badly on 10g Release 10.2 (文档 ID 377037.1)
不过,用如上文章的处理方式是不行的。可以用如下的方法来处理:
1.把10g中sys.ALL_SYNONYMS的视图的定义改为9i时的定义,这个也就是http://blog.itpub.net/16396910/viewspace-1029636的处理思路
2.惜分飞(www.xifenfei.com)的思路:
【少侠】惜分飞<dba@xifenfei.com> 9:56:09
这种东西,我们以前的做法是直接创建一个表或者物化视图
【少侠】惜分飞<dba@xifenfei.com> 9:56:12
定期更新
【少侠】惜分飞<dba@xifenfei.com> 9:56:23
其实只要应用没有升级,这个数据是固定的
【少侠】惜分飞<dba@xifenfei.com> 9:56:27
然后在上面创建index
【少侠】惜分飞<dba@xifenfei.com> 9:56:36
这样根据优先级的关系
【少侠】惜分飞<dba@xifenfei.com> 9:56:39
会先使用表