繁体   English   中英

SQL OPENQUERY更新

[英]SQL OPENQUERY UPDATE

我正在尝试从SQL Server更新Oracle表。 我已经设置了链接服务器,并且能够使用以下查询更新此表。

UPDATE OPENQUERY(LNK_SRV, 'SELECT BOGNUMBER, BOGDATA FROM DATA.BOGTAB')
SET BOGNUMBER = 009
WHERE BOGDATA = 'LIVE'

现在上面的查询将非常慢,因为您可以想象,因为未过滤表DATA.BOGTAB中的整个数据,而where子句是SQL Server查询。

我想优化上面的查询,以便它是快速的,而我看到的一种方法是通过创建一个动态查询并执行它来在远程服务器上执行此更新语句。 我认为,如果将where子句以某种方式嵌入到将在远程服务器上执行的查询中,将会有所帮助,因为它将提供经过过滤的数据集。 谁能帮我弄清楚我如何动态创建查询并执行此更新语句。 谢谢!

尝试了几件事,我对此有解决方案...

DECLARE @VC_DYN_QUERY NVARCHAR(255)
SET @VC_DYN_QUERY = 'UPDATE DATA.BOGTAB SET BOGNUMBER = 009 WHERE BOGDATA = ''LIVE'''
EXECUTE (@VC_DYN_QUERY) AT LNK_SRV

这将只执行我们在远程服务器上准备的动态查询,这会更快很多,因为没有大量数据通过网络传输,或者我们在SQL Server的where子句中没有任何昂贵的比较。

希望有人能像我一样从中受益。 谢谢!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM