簡體   English   中英

為什么MS-Access中的Teradata查詢比SQL Server更快

[英]Why is a Teradata query faster in MS-Access than SQL Server

我需要加入一個包含大約5億條記錄的Teradata表和一個包含大約10,000條記錄的本地表。 我讓它在MS Access中工作,運行大約需要15分鍾。 我更喜歡在SQL Server中執行此操作,但甚至無法在本地SQL表中獲得具有1條記錄的連接。

為什么MS Access能夠做到這一點,雖然速度很慢,而SQL Server會窒息? 什么是MS Access與SQL Server的不同之處?

連接失敗的SQL Server查詢:

SELECT a.trk, a.wgt
FROM openquery(TERADATA, 'SELECT trk, wgt 
                          FROM SHIPMENT_DB.pkg') a
INNER JOIN  (Local_Tbl) b ON a.trk = b.Tracking_Number

一個沒有連接的簡單SQL Server查詢:

SELECT * 
FROM openquery(TERADATA,'SELECT trk, wgt 
                         FROM SHIPMENT_DB.pkg 
                         WHERE trk = ''773423067500''') 

不是答案,但我使用OPENDATASOURCE也有類似的問題。 性能非常糟糕,查詢需要花費數小時才能運行。 解決方案是確保WHERE子句中涉及的所有colmns都具有數學數據類型。 在我的例子中,遠程列是INT,但在查詢中它作為varchar傳遞:...'WHERE remote_table.ID =''4'''...一旦我將所有值更改為相應的數據類型,查詢采取了運行秒。

查看SQL Server中的執行計划。 由於它對將要從Teradata返回的數據集知之甚少,因此它正在做出一些假設。

交換連接中表的順序將有所幫助。 使用顯式的INNER HASH JOIN可能有所幫助(一旦你切換了訂單)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM