我正在尝试从SQL server更新Oracle表。我已经设置了一个链接服务器,并且我能够使用下面的查询更新这个表。
UPDATE OPENQUERY(LNK_SRV, 'SELECT BOGNUMBER, BOGDATA FROM DATA.BOGTAB')
SET BOGNUMBER = 009
WHERE BOGDATA = 'LIVE'现在,正如您可以想象的那样,上面的查询非常慢,因为来自表DATA.BOGTAB的整个数据都没有过滤,where子句是server查询。
我想优化上面的查询,以便它是快速的,我看到的一种方法是通过创建一个动态查询并执行它,在远程服务器上执行这个update语句。我认为,如果where子句以某种方式嵌入到将在远程服务器上执行的查询中,会有所帮助,因为它将提供一个过滤过的数据集。有谁能帮我弄清楚如何动态创建查询并执行这个update语句?谢谢!
发布于 2014-05-26 07:30:04
尝试了几件事,我找到了解决办法.
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子句中没有任何昂贵的比较。
希望有人能像我一样从中受益。谢谢!
https://stackoverflow.com/questions/23864598
复制相似问题