DBLINK HINT /*+ driving_site(org) */ 优化策略和思路
使用DBLINK远程访问数据库的优化策略和思路:
策略:远程访问,网络传输占很大部分,优化原则,减少网络传输,将小的结果集拉到本地处理;
思路1:在远端建立视图;
思路2:使用DRIVING_SITE将数据拉到本地处理;
出现这种执行计划,主要原因是使用了db link,要想看到执行计划,可以加 hint,如:
/*+remote_mapping(db_link)*/或/*+driving_site(table_name)*/
用法: /*+driving_site(table_name)*/ : table_name 一般是大表!
select /*+driving_site(main)*/ a.*,b.* from A.a main@BigTableDB,B.b minor where main.id=minor.id and .......
执行计划分析在哪端执行:
在读取执行计划时,在执行计划中remote操作的对端执行,例如上例,在main所在数据库执行,则main对端库的操作表,将显示为remote。
这样一来就可以避免大表所在库的全表扫描,查询速度将成级数级提高。
解释:
当指定 /*+driving_site(main)*/ 时, oracle将会从minor表获取全部数据到main表所在的数据库来进行关联运算.(索引起作用,速度快)
若指定 /*+driving_site(minor)*/ 时, oracle将会从main表获取全部数据到minor表所在的数据库来进行关联运算.(索引失败,全表扫描)