请问driving_site中包含多个表的语法?????select /*+driving_site(table1,table2,table3)*/??????

smile_wu 2009-01-23 03:43:55
请问我的一个查询语句是要丛dblink查询几个表,driving_site中包含多个表的语法是怎么样的?比如:

select /*+driving_site(table1,table2,table3)*/
table1.column,table2.column,table3.column...
from table1@dblink table1
,table2@dblink table2
,table3@dblink table3
where ...
...全文
503 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
又是违规昵称 2009-02-04
  • 打赏
  • 举报
回复
mark,有空再试验
dawugui 2009-01-23
  • 打赏
  • 举报
回复
教你快速掌握Oracle中“HINT”的30个用法

http://www.examda.com/oracle/jishu/20070927/101719655.html
dawugui 2009-01-23
  • 打赏
  • 举报
回复
driving_site的相关说明:


对于那些存在远程的SQL,ORACLE可以有两种选择:
1,在远端执行SQL
2,在本地执行SQL
至于如果选择SQL的执行地点呢,这完全是由SQL决定的,看在哪端执行的COST低就在哪端执行。但是ORACLE并不总是那么聪明,所以有的时候需要我们自己觉得SQL在哪端执行。我们可以driving_site这个HINT来决定SQL的执行。
看下面的SQL:

SELECT /*+driving_site(a)*/
a.column_1,
b.column_2
FROM table_1@dl_remote a,
table_2 b
WHERE a.column_1 = b.column;

由于table_1是远端的表,在/*+driving_site(a)*/提示的影响下,oracle会把表table_2发送到dl_remote所指的远端,
然后在远端进行连接,最后把执行的结果在返回给本地。

SELECT /*+driving_site(b)*/
a.column_1,
b.column_2
FROM table_1@dl_remote a,
table_2 b
WHERE a.column_1 = b.column;

由于table_2是本地的表,在/*+driving_site(b)*/提示的影响下,oracle会把表table_1的数据取到本地,
然后在本地进行连接,最后把执行的结果在返回。

如果表table_1和table_2的记录数相差很多的话,选择合适的执行端就显得极其重要了。

smile_wu 2009-01-23
  • 打赏
  • 举报
回复
请问是不是把/*+driving_site(table1,table2,table3)*/
替换成/*+ remote_mapped(dblink) */
好些呢?

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧