1. 程式人生 > 資料庫 >SQL Server臨時表生命週期

SQL Server臨時表生命週期

#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