簡體   English   中英

是否有必要使用#在SQL Server中創建臨時表?

[英]Is it necessary to use # for creating temp tables in SQL server?

在SQL Server中創建臨時表之前是否需要使用#

例:

SELECT column1, column2, someInt, someVarChar 
INTO ItemBack1 
FROM table2
WHERE table2.ID = 7

對於ItemBack1,是否需要使用#符號?

如果沒有,那么#在創建臨時表時有什么用?

是。 您需要在表名前加上“#”(哈希)來創建臨時表。

如果您以后不需要該表,請繼續並創建它。 臨時表與普通表非常相似。 但是,它在tempdb中創建。 此外,它只能通過當前會話訪問,即對於EG:如果另一個用戶試圖訪問您創建的臨時表,他將無法這樣做。

“##”(雙重哈希創建“全局”臨時表,也可以被其他會話訪問。

有關臨時表基礎知識,請參閱以下鏈接: http//www.codeproject.com/Articles/42553/Quick-Overview-Temporary-Tables-in-SQL-Server-2005

如果表的內容少於5000行且不包含數據類型(如nvarchar(MAX),varbinary(MAX)),請考慮使用表變量。

它們是最快的,因為它們就像存儲在RAM中的任何其他變量一樣。 它們也存儲在tempdb中,而不是存儲在RAM中

DECLARE @ItemBack1 TABLE
(
 column1 int,
 column2 int,
 someInt int,
 someVarChar nvarchar(50)
);

INSERT INTO @ItemBack1
SELECT column1, 
       column2, 
       someInt, 
       someVarChar 
  FROM table2
 WHERE table2.ID = 7;

有關表變量的更多信息: http//odetocode.com/articles/365.aspx

這兩個表ItemBack1#ItemBack1之間的區別在於,第一個是持久性(永久性),而另一個是臨時性的。

現在再來看看你的問題吧

是否有必要使用#在sql server中創建臨時表?

答案是肯定的 ,因為如果沒有前面的# ,表將不是臨時表,它將獨立於所有會話和范圍。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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