繁体   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