我们正在oracle中编写一个查询,该查询需要从连接位于不同服务器上的不同数据库中的两个表中获取数据。
为此,我们在查询中使用 Dblinks 。但是,这导致查询执行速度非常慢。
有没有其他方法可以这样做而不是使用Dblinks?
答案 0 :(得分:0)
当然,物化视图(如提议的那样)可以解决您的问题。但有时MV会很昂贵。我想知道,如果你能使用" with statement"引用远程数据库表。
然后,实际的Select语句使用this with语句一次,必须从内到外构建,如下所示:
with XXX as (
Select stuff from foo_table@bar_link
)
select * from XXX left join your_local_table using (your key)
如果您的Oracle配置正确,它应该执行"昂贵的#34;只加载一次外国数据的一部分。所以你为数据库驱动空间腾出一个MV ......试一试!重要的是不要在Where语句中使用远程数据库中的东西。因为有时候,你在远程DB中查询你在where子句中检查的每一行......
祝你好运