Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

22

积分

0

好友

12

主题
1#
发表于 2013-7-19 11:28:38 | 查看: 3460| 回复: 2
sql如下
SELECT SUM(TT.CNT) SUMCNT
  FROM (SELECT 2, COUNT(*) CNT
          FROM EVENT_RECURRING_225 C
         WHERE C.BILLING_CYCLE_ID = 225
           AND C.SUBS_ID IN (SELECT ID FROM SUBS WHERE ACC_NBR = '9781699546')
        UNION
        SELECT 3, COUNT(*) CNT
          FROM OCS_CDR_219 B
         WHERE B.BILLING_CYCLE_ID = 225
           AND B.RE_ID IN (1230, 1312)
           AND B.SUBS_ID IN
               (SELECT T.ID FROM SUBS T WHERE T.ACC_NBR = '9781699546')) TT
执行时间为433.932秒,执行计划如下
QQ图片20130719112440.jpg


把条件中的号码部分直接换成subs_id的sql如下
SELECT SUM(TT.CNT) SUMCNT
  FROM (SELECT 2, COUNT(*) CNT
          FROM EVENT_RECURRING_225 C
         WHERE C.BILLING_CYCLE_ID = 225
           AND C.SUBS_ID IN (80660675)
        UNION
        SELECT 3, COUNT(*) CNT
          FROM OCS_CDR_219 B
         WHERE B.BILLING_CYCLE_ID = 225
此sql在rb库中执行速度比较快,仅需要0.047秒,

EVENT_RECURRING_225 ,和 OCS_CDR_219 的 SUBS_ID 都有索引, 第一个SQL 没有走索引 2个表都走了全表扫描,

第二个SQL 分别走了 各自表 SUBS_ID 的索引 所以很快?  SUBS 表示另外一个实例上的 表,建了 同义词。

不知道为什么第一个SQL 无法使用索引?是不是由于DBLINK 导致的? 怎么解决?



Oracle ALLSTARS II:171092051(Oracle基础讨论群)
提问之前请阅读以下链接
http://t.askmaclean.com/thread-714-1-1.html
http://train.askmaclean.com/node/5
Oracle ALLSTARS III:180013778(扯蛋打酱油专用群)
2#
发表于 2013-7-19 19:12:01
个人感觉有关系,把一个"查询过程的结果"作为限制条件和直接把"查询的结果"作为限制条件还是有很大的不同啦。另外再考虑到网络的影响,多少也是一个因素。

最好把执行计划以文本的形式粘贴过来,要么看截图看的不是很清楚还是很痛苦的 :(

建议把前后两个语句的执行计划对比一下,而不仅仅看时间更快啦。
也可以看看语句"SELECT ID FROM SUBS WHERE ACC_NBR = '9781699546'", 看看单独执行执行计划如何,是否走索引,时间消耗怎么样?

个人意见,仅供参考。

Good luck.

回复 只看该作者 道具 举报

3#
发表于 2013-7-22 14:12:19
Stone 发表于 2013-7-19 19:12
个人感觉有关系,把一个"查询过程的结果"作为限制条件和直接把"查询的结果"作为限制条件还是有很大的不同啦 ...

把 EVENT_RECURRING_225 C  这2个表 重新做了一次 数据分析后,执行计划正常了。 没搞明白为什么,

回复 只看该作者 道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-12-29 19:40 , Processed in 0.051676 second(s), 23 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569