Sql 驱动多个远程表的\u站点提示
我有一个以下格式的查询。它使用两个远程表和一个本地表Sql 驱动多个远程表的\u站点提示,sql,oracle,oracle12c,Sql,Oracle,Oracle12c,我有一个以下格式的查询。它使用两个远程表和一个本地表 SELECT * FROM table1@db2 t1 INNER JOIN table2@db2 t2 -- two large remote tables on the same DB ON t1.id = t2.id WHERE t1.prop = '1' AND t2.prop = '2' AND t1.prop2 IN (SELECT val FROM tinylocaltable) 我想知道如何正确地使用DRIVING\
SELECT *
FROM table1@db2 t1 INNER JOIN table2@db2 t2 -- two large remote tables on the same DB
ON t1.id = t2.id
WHERE t1.prop = '1'
AND t2.prop = '2'
AND t1.prop2 IN (SELECT val FROM tinylocaltable)
我想知道如何正确地使用DRIVING\u站点
query提示将大部分工作推送到db2(即确保在db2上应用连接和条件)。我看到的DRIVING\u SITE
的大多数示例仅涉及一个远程表。SELECT/*+DRIVING\u SITE(t1)*/*
是否足够,或者我是否需要在提示中列出两个远程表(t1和t2)?如果是后者,正确的语法是什么
(如果您想知道为什么不首先在db2上执行它,那是因为这实际上是一个较大查询的UNION ALL
部分,而其他UNION ALL
部分使用本地数据库)
DRIVING_SITE提示指示优化器在与数据库所选站点不同的站点上执行查询
您的查询使用
FROM table1@db2 t1 INNER JOIN table2@db2 t2
如果两个表位于同一个“不同站点”,那么
应该可以(在我看来,在文档中找不到任何与此不同的建议)
SELECT /*+ DRIVING_SITE(t1)*/