簡體   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