问题描述
嗨,汤姆,
希望你做得很好!
我很高兴写这篇文章,以从您那里获得有价值的信息。我们的情况是加入多个远程表加入,以便将预期数据放入我们的架构中,但它需要更长的执行时间 (即5k记录-30秒)
在加入一个远程表时传递提示/* DRIVING_SITE(t)*/时,性能很好,但是在加入多个远程表时,我无法进行太多改进。
您能否请我们如何提高性能?
提前非常感谢!
问候,
Sai M
希望你做得很好!
我很高兴写这篇文章,以从您那里获得有价值的信息。我们的情况是加入多个远程表加入,以便将预期数据放入我们的架构中,但它需要更长的执行时间 (即5k记录-30秒)
在加入一个远程表时传递提示/* DRIVING_SITE(t)*/时,性能很好,但是在加入多个远程表时,我无法进行太多改进。
您能否请我们如何提高性能?
提前非常感谢!
SELECT lai.ari_rec_id
FROM lsmv_aer_info@db_lnk lai,
master_tab mc
WHERE mc.ari_rec_id = lai.ari_rec_id
-- Execution time : 30 sec, record count : 5K
Plan
SELECT STATEMENT ALL_ROWSCost: 1,654 Bytes: 99,880 Cardinality: 4,994
3 HASH JOIN Cost: 1,654 Bytes: 99,880 Cardinality: 4,994
1 TABLE ACCESS FULL TABLE IRT_LAND_LSP.MASTER_CASE Cost: 5 Bytes: 35,000 Cardinality: 5,000
2 REMOTE REMOTE SERIAL_FROM_REMOTE LSMV_AER_INFO db_lnkCost: 1,636 Bytes: 32,953,518 Cardinality: 2,534,886
Using Oracle Hint : DRIVING_SITE
SELECT /*+DRIVING_SITE(lai)*/
lai.ari_rec_id
FROM lsmv_aer_info@db_lnk lai,
master_tab mc
WHERE mc.ari_rec_id = lai.ari_rec_id
-- Execution time : 1 sec, record count : 5K
Explain Plan
SELECT STATEMENT REMOTE ALL_ROWSCost: 5 Bytes: 69,916 Cardinality: 4,994
3 NESTED LOOPS Cost: 5 Bytes: 69,916 Cardinality: 4,994
1 REMOTE REMOTE SERIAL_FROM_REMOTE MASTER_CASE !Cost: 4 Bytes: 35,000 Cardinality: 5,000
2 INDEX RANGE SCAN INDEX ABV_LSMV10B2_SND_DM.IDX_ARI_RECID_17 LSABVDEVCost: 1 Bytes: 7 Cardinality: 1 问候,
Sai M
专家解答
通过数据库链接连接许多表时,通常会浪费大量时间通过网络传输行。
通过在子查询中将远程表连接在一起来避免这种情况。本地表也是如此。
然后加入这些子查询的结果。
例如:
有关此的更多详细信息,请参阅此询问TOM Office Hours有关调整分布式查询的视频:
通过在子查询中将远程表连接在一起来避免这种情况。本地表也是如此。
然后加入这些子查询的结果。
例如:
with remote as ( select /*+ no_merge */* from t1@rem join t2@rem on ... ) , local as ( select /*+ no_merge */* from local_t1 join local_t2 on ... ) select * from remote join local on ...
有关此的更多详细信息,请参阅此询问TOM Office Hours有关调整分布式查询的视频:
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




