![](/img/trans.png)
[英]SQL 2005 CTE vs TEMP table Performance when used in joins of other tables
[英]CTE & Temp Tables Performance Issue
我已經工作了一段時間的查詢充滿了 7 個臨時表,直到我不得不用 CTE(7 個 CTE)替換它們,因為 OPENQUERY 在使用 TempTables 時給出以下錯誤:
在分析單語句批處理時,元數據發現僅支持臨時表。
當我使用臨時表運行查詢時,運行持續時間為: 7:50
: 7:50
當我使用 CTE 運行查詢時,運行持續時間為: 15:00
: 15:00
時間幾乎翻倍! OPENQUERY 是否還有其他替代方法可以使其運行得更快,同時保留我的臨時表?
當前執行查詢:
SET @XSql = 'SELECT * FROM OPENQUERY([server], ''' + REPLACE(@QSql, '''', '''''') + ''')'
EXEC(@XSql)
我將其用作參考: 存儲過程並使用參數從鏈接的存儲過程填充臨時表
並且需要一個最優解。
打開建議!
您可以使用EXEC ... AT SERVER
嗎? 這對我來說很好:
EXEC ('CREATE TABLE #TestTable1 (ID int); CREATE TABLE #TestTable2 (ID int); SELECT * FROM #TestTable1, #TestTable2;') AT LinkedServer;
我已經解決了我的問題,我只是將我的執行查詢替換為以下內容:
EXEC (@Qsql) AT [servername]
這支持臨時表,也擺脫了我遇到的任何其他性能問題。
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.