[英]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.