上执行。
我的包中有一个使用远程DB链接的游标。我想优化包装的性能。所以我想从优化游标开始。
我将提供一些信息来分析,
- 查询中没有本地表只有远程DB链接。
- 游标查询使用6个远程DB链路并执行连接操作。 所有的DBlinks指向同一个DB但是不同的表。
- SELECT没有任何聚合操作,只有NVL少数列函数
- 大约90列被选中
SELECT (SOME 90 COLUMNS)
FROM master1_all@db_one m1,
master2_all@db_one m2,
prey1@db_one pa,
prey2@db_one pb,
prey2@db_one pc,
tbl_abc@db_one xa,
(SELECT
geo.country,
geo.state
FROM tb_dest@db_one geo ) geo WHERE ( m1.master_key = m2.master_key ) AND
( pc.weather_key = m2.cloud_key ) AND
( m1.order_type_id = pa.weather_key ) AND
( pa.weather_key = pb.weather_key ) AND
( m2.food_store_key = xa.food_store_key ) AND
( (nvl(m2.shop_key ,121)) = xa.store_key ) AND
( geo.country (+) = m1.country ) AND
(xa.food_type NOT IN ('COLD')) AND
( m2.food_type_code NOT IN ('WINTER')
OR m2.price_per_portion !=0 ) AND
( ( m1.last_purchase_date >= TRUNC(SYSDATE-10) - 1/48 And m1.last_purchase_date <= TRUNC(SYSDATE) )
Or ( m2.last_purchase_date >= TRUNC(SYSDATE-10) - 1/48 And m2.last_purchase_date <= TRUNC(SYSDATE) ));
这不是实际的查询,但结构相似
首先试着找到你查询的瓶颈。如果问题仅在执行远程表的查询时出现您可以使用hint/*+ DRIVING_SITE(…)*/https://docs.oracle.com/cd/B28359_01/server.111/b28286/sql_elements006.htm#BABEGIJC, oracle将尝试在远程数据库