dblink导致执行计划出错,hint也无效(一)

2015-07-24 11:12:33 · 作者: · 浏览: 26
开发的同事发来一条语句,让我帮忙查看下ods和源端的结果是否一致。因为一下执行没出来,问开发人员,这个语句要跑2-3分钟。
因为他们是从本地用dblink连到ods的,我这里把dblink去掉直接从ods查看执行计划。
SELECT XSY_CODE,--发展销售员编码
       SLY_CODE,--受理销售员编码
       XSD_CODE,--销售点编码 
       DZS_CODE,--店中商编码 
       JYZT_CODE--销售员所属经营主体编码
FROM (select /*+parallel(a,10) parallel(b,10) parallel(c,10) parallel(d,10)*/a.subs_id,c.serv_id,b.action_id,d.action_type,a.stat,a.stat_date
      from crm_gz.tb_ba_subscription_hist a,
      crm_gz.tb_ba_action_hist b,
      crm_gz.tb_ba_serv_hist c,
      crm_gz.tb_pm_action d
      where a.subs_id=b.subs_id and a.subs_id=c.subs_id and b.action_id=d.action_id
      and d.city_id='200' and a.stat='S0C') a,
      (select * from crm_gz.tb_ba_channelstaff 
      where modi_date>=to_date('20141123','yyyymmdd')) b
WHERE a.subs_id=b.subs_id(+)
and a.stat_date>=to_date('20141123','yyyymmdd')
and ((a.action_type='NEW' and a.action_id not in(14030,14266,7021)) 
or a.action_id in(14099,14260,6448))
AND SERV_ID in ('3751990561',
'3751991941',
'3751992281',
'3751992431',
'3751992831',
'3751994541',
'3751994561',
'3753633921',
'3753633981',
'3753634021',
'3753634041',
'3753634111',
'3753634271',
'3753622431',
'3753644141',
'3753645051',
'3753645261',
'3753647021',
'3745498320',
'3751978420',
'3751978950');

--于是看下执行计划
-----------------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                               | Name                    | Rows  | Bytes | Cost (%CPU)| Time     | Pstart| Pstop |
-----------------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                        |                         |     2 |   232 |   296   (0)| 00:00:05 |       |       |
|*  1 |  TABLE ACCESS BY LOCAL INDEX ROWID      | TB_BA_SERV_HIST         |     1 |    15 |    79   (0)| 00:00:02 |       |       |
|   2 |   NESTED LOOPS                          |                         |     2 |   232 |   296   (0)| 00:00:05 |       |       |
|   3 |    NESTED LOOPS OUTER                   |             
| 2 | 202 | 139 (0)| 00:00:02 | | | | 4 | NESTED LOOPS | | 2 | 98 | 136 (0)| 00:00:02 | | | | 5 | NESTED LOOPS | | 12 | 396 | 124 (0)| 00:00:02 | | | | 6 | PARTITION RANGE ALL | | 12 | 240 | 88 (0)| 00:00:02 | 1 | 39 | | 7 | TABLE ACCESS BY LOCAL INDEX ROWID| ORDER_ITEM_HIST | 12 | 240 | 88 (0)| 00:00:02 | 1 | 39 | |* 8 | INDEX RANGE SCAN | IXH_ORDERITEM_STATDATE | 12 | | 79 (0)| 00:00:02 | 1 | 39 | | 9 | TABLE ACCESS BY INDEX ROWID | TB_BA_ACTION_HIST | 1 | 13 | 3 (0)| 00:00:01 | | | |* 10 | INDEX RANGE SCAN | IX_BA_ACT_SUBSID_HIST | 1 | | 2 (0)| 00:00:01 | | | |* 11 | TABLE ACCESS BY INDEX ROWID | TB_PM_ACTION | 1 | 16 | 1 (0)| 00:00:01 | | | |* 12 | INDEX UNIQUE SCAN | PK_PM_ACTION | 1 | | 0 (0)| 00:00:01 | | | |* 13 | TABLE ACCESS BY INDEX ROWID | TB_BA_CHANNELSTAFF | 1 | 52 | 2 (0)| 00:00:01 | | | |* 14 | INDEX UNIQUE SCAN | PK_CHANNELSTAFF_SUBS_ID | 1 | | 1 (0)| 00:00:01 | | | | 15 | PARTITION RANGE ALL | | 1 | | 78 (0)| 00:00:02 | 1 | 39 | |* 16 | INDEX RANGE SCAN | IX_BA_SERVSUBSID_HIST | 1 | | 78 (0)| 00:00:02 | 1 | 39 | ----------------------------------------------------------------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 1 - filter("C"."SERV_ID"=3745498320 OR "C"."SERV_ID"=3751978420 OR "C"."SERV_ID"=3751978950 OR "C"."SERV_ID"=3751990561 OR "C"."SERV_ID"=3751991941 OR "C"."SERV_ID"=3751992281 OR "C"."SERV_ID"=3751992431 OR "C"."SERV_ID"=3751992831 OR "C"."SERV_ID"=3751994541 OR "C"