[英]SSIS performance vs OpenQuery with Linked Server from SQL Server to Oracle
[英]Using dot notation vs OpenQuery from SQL Server to Oracle
試圖將數據從 Oracle 引入 SQL Server。 SQL 定義了一個鏈接服務器。 我需要在 Oracle 端過濾掉數據,所以有一個 WHERE 子句根據一列(時間段)的值來限制數據。
使用兩種不同的方法嘗試性能:OpenQuery:
select * INTO T2 from OpenQuery(LinkedSrv,'select * from SCHEMA.TAB')
點符號(LinkedServer..Schema.Table):
select * INTO T2 from LinkedSrv..SCHEMA.TAB
兩者的執行速度都很慢,每秒推送大約 5-6k 行。 對於 20M 的行表,這並不理想。 然后發現了一些很有趣的事情:
select * INTO T2 from LinkedSrv..SCHEMA.TAB WHERE col >= Value
這將吞吐量推高至近 100k 行/秒
使用 OpenQuery 指定標准不會影響整個過程。 解釋計划顯示
RemoteQuery -> ComputeScalar -> Filter (WHERE) -> TableInsert in the dot notation scenario with WHERE.
除此之外,解釋計划是相同的。 那么......如何在本地添加一個 WHERE 子句(因為這是它所做的)將吞吐量提高 10 倍???
...在使用 OpenQuery 時,我該怎么做才能實現(預期的結果)相同的快速吞吐量?
謝謝!
點表示法和 OpenQuery 方法之間的區別在於,第一個使用客戶端游標引擎,並且大多數事情在本地進行評估,而第二個將 Query 發送到遠程服務器並讀取輸出。
OpenQuery 方法並不總是在點符號查詢中過濾數據更快。 它基於每個本地和遠程服務器資源。
查看以下stackoverflow問題,他們將為您提供更多信息:
附加信息
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.