SQL Server OPENQUERY 与针对 AS400 的常规查询

The*_*heo 5 sql-server linked-server iseries

我登录到一个 SQL Server 数据库,它有一个 AS400 服务器作为链接服务器。

我发现如果我在 OPENQUERY 中运行选择,那么针对这个 AS400 服务器运行查询会快得多...

SELECT  EMEQP#
FROM _
WHERE EMALOC = '467' AND EMDLCD = 'A' AND EMSTAT NOT IN ('S', 'J', 'V')
Run Code Online (Sandbox Code Playgroud)

执行时间:46秒

SELECT EMEQP#
FROM
OPENQUERY(_, '
SELECT  EMEQP#
FROM _
WHERE EMALOC = ''467'' AND EMDLCD = ''A'' AND EMSTAT NOT IN (''S'', ''J'', ''V'')
')
Run Code Online (Sandbox Code Playgroud)

执行时间:1秒

有人可以解释或链接我为什么/如何发生这种情况吗?

a1e*_*x07 5

当您使用openquery在远程服务器上执行的查询本身并且您只收到结果时。在链接服务器的情况下,您的本地服务器会完成所有工作。您可能需要查看 http://social.msdn.microsoft.com/Forums/eu/transactsql/thread/0e68f512-1e19-4c50-b343-219085d70076