我使用openquery从本地SQL Server实例查询链接的Oracle服务器。问题是我想在链接实例中执行时限制基于本地数据库中的表(大约10k行)返回的结果。通常情况下我会反过来做一些事情,如:
SELECT *
FROM OPENQUERY(DBlinked, 'SELECT…') link_serv
INNER JOIN localdb.table1 local_1
ON local_1.column_1 = link_serv.column_1
但是由于在openquery(具有100百万行的多个表)中针对整个数据集执行的链接表的大小,然后使用连接在本地进行子设置不是一个好主意。
我试图在openquery中引用本地服务器,但由于该表位于本地文件上,因此无法找到该表,并且我没有对链接服务器的写权限,因此移动本地表转到链接服务器会有问题。
有关如何在所有连接之前限制结果的任何指导将不胜感激。使用openquery不是必需的 - 它只是我找到的唯一优雅解决方案,用于处理针对大型链接表的资源密集型查询。
基本上我要做的是
SELECT * FROM OPENQUERY(oracleDB, '
SELECT *
FROM dbo.table1 Ot
INNER JOIN Local_SQLServ.DB1.DBO.Table1 St
ON St.Column1 = Ot.column1’)