SQL Server臨時表生命週期
阿新 • • 發佈:2021-01-11
#tmp 與 ##tmp
SQL Server可這樣建立臨時表
SELECT * INTO #tmp FROM table1;
也可以這樣建立臨時表
SELECT * INTO ##tmp FROM table1;
這兩者的區別在於生命週期的不同:
#tmp
的生命週期在於當前連線,連線關閉則該表自動被刪除
##tmp
的生命週期在於所有連線,在當前連線和其他訪問過它的連線都斷開時失效
所以,在java中,如果當需要多個連線訪問臨時表時應該用##tmp
而非#tmp
!
臨時表是否需要顯示刪除
不用臨時表的時候最好顯示刪除掉,因為關閉連線/連線池的時候SQL Server才幫我們清除臨時表了,但事實上連線池只有當程式重啟的時候才清掉。
不顯示清楚掉則可能導致tempdb佔用硬碟空間非常大!
參考
- https://blog.csdn.net/yenange/article/details/78685231
- https://blog.csdn.net/wd1624348916/article/details/52566174