Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 在多个键上的OPENQUERY中联接SQL Server表_Sql Server_Oracle_Linked Server - Fatal编程技术网

Sql server 在多个键上的OPENQUERY中联接SQL Server表

Sql server 在多个键上的OPENQUERY中联接SQL Server表,sql-server,oracle,linked-server,Sql Server,Oracle,Linked Server,我需要将10亿行的Oracle链接服务器表与多个键上100行的SQL server表连接起来: SELECT * FROM OPENQUERY(EDW, 'SELECT * FROM ORACLE_TABLE') A INNER JOIN SQL_TABLE B ON A.KEY1 = B.KEY1 AND A.KEY2 = B.KEY2 INNER JOIN SQL_TABLE C ON A.KEY3 = C.KEY1 AND A.KEY4 = C.KEY2; 但是ORACLE_表非常庞大,

我需要将10亿行的Oracle链接服务器表与多个键上100行的SQL server表连接起来:

SELECT * FROM OPENQUERY(EDW, 'SELECT * FROM ORACLE_TABLE') A
INNER JOIN SQL_TABLE B
ON A.KEY1 = B.KEY1 AND A.KEY2 = B.KEY2
INNER JOIN SQL_TABLE C
ON A.KEY3 = C.KEY1 AND A.KEY4 = C.KEY2;

但是ORACLE_表非常庞大,这个查询需要花费太多的时间来运行。有没有办法将SQL_表传递给OPENQUERY并在Oracle server上进行连接?

B中有多少行?您可能需要Oracle端的视图或过程来执行您的请求。在这种情况下,临时表和光标是最好的选择吗?@shawnt00让我们假设B中有100行,a中有10亿行。B中的内容不是静态的。临时表或游标将如何工作?最简单的方法是让它在脚本/过程中从B循环所有行。还可以查看这是否是一种改进:从存在的B中选择*从A中选择1,其中A.KEY1=B.KEY1和A.KEY2=B.KEY2和A.KEY3=B.KEY3是否可以在Oracle上设置一个视图以从SQL Server中提取数据?@shawnt00但该查询没有从A中选择列?我真正需要的是A中的数据,B更像是一个带键的表。B中有多少行?您可能需要Oracle端的视图或过程来执行您的请求。在这种情况下,临时表和光标是最好的选择吗?@shawnt00让我们假设B中有100行,a中有10亿行。B中的内容不是静态的。临时表或游标将如何工作?最简单的方法是让它在脚本/过程中从B循环所有行。还可以查看这是否是一种改进:从存在的B中选择*从A中选择1,其中A.KEY1=B.KEY1和A.KEY2=B.KEY2和A.KEY3=B.KEY3是否可以在Oracle上设置一个视图以从SQL Server中提取数据?@shawnt00但该查询没有从A中选择列?我真正需要的是来自A的数据,B更像是一个带键的表。