gpt4 book ai didi

database - 在 SAS 中连接来自两个 Oracle 数据库的表

转载 作者:搜寻专家 更新时间:2023-10-30 22:29:31 26 4
gpt4 key购买 nike

我将位于两个单独的 Oracle 数据库中的两个表连接在一起。

我目前在 sas 中通过为每个数据库创建两个 libname 连接然后简单地使用类似下面的东西来做到这一点。

libname dbase_a oracle user= etc... ;
libname dbase_b oracle user= etc... ;

proc sql;
create table t1 as

select a.*, b.*
from dbase_a.table1 a inner join dbase_b.table2 b
on a.id = b.id;
quit;

但是查询速度非常慢。您能否建议任何更好的选项来加快此类查询的速度(除了创建沿着创建数据库链接的路径的数据库链接之外)?

非常感谢您看到这里。

最佳答案

如果这两个数据库在同一台服务器上,并且您能够在 Oracle 中执行跨数据库查询,您可以尝试使用 SQL 传递:

proc sql;
connect to oracle (user= password= <...>);
create table t1 as
select * from connection to oracle (
select a.*, b.*
from dbase_a.schema_a.table1 a
inner join dbase_b.schema_b.table2 b
on a.id = b.id;
);
disconnect from oracle;
quit;

我认为,在大多数情况下,SAS 会尽可能地尝试在数据库服务器上执行查询,即使没有明确指定传递。但是,当该查询查询位于不同服务器上的表时,系统上的不同数据库不允许跨数据库查询,或者如果查询包含 SAS 无法转换为 DBMS 系统上有效的某些特定的 SAS 函数,那么 SAS 确实会求助于“下载”完整的表并在本地处理查询,这显然效率低下。

关于database - 在 SAS 中连接来自两个 Oracle 数据库的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46684416/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com