簡體   English   中英

CTE 和臨時表性能問題

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

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