我有一個巨大的存儲過程,它將表中的數據收集到3個臨時表(表變量)中。無限期執行select語句的存儲過程
@table1: 50,000 records
@table2: 23,000 records
@table3: 15,000 records
準備數據後,將存儲過程執行從這些臨時表和一些物理表爲XML格式並返回到客戶端轉換數據中的一個巨大的選擇語句(180線)。
由於項目的機密性,我無法在此處發佈存儲過程。存儲過程卡在這個select
聲明。即使運行存儲過程24小時後,它也沒有完成執行。
然後我換成本地臨時表(#table1, #table2, #table3
)所有表變量。令我驚訝的是,存儲過程用相同的數據成功執行。
我無法理解兩種方法的區別;以及爲什麼存儲過程無限期執行table variables
?
誰告訴你表變量駐留在內存中? http://blogs.msdn.com/b/sqlserverstorageengine/archive/2008/03/30/sql-server-table-variable-vs-local-temporary-table.aspx - 表格變量可以存放在光盤上,在tempdb中確切地說。 – TomTom 2014-09-02 08:27:16
@TomTom感謝您糾正我,編輯我的帖子 – Jaguar 2014-09-02 08:43:08