在SQL Server中创建临时表之前是否需要使用#
?
示例:
SELECT column1, column2, someInt, someVarChar
INTO ItemBack1
FROM table2
WHERE table2.ID = 7
对于ItemBack1,是否需要使用#
符号?
如果没有,那么#
在创建临时表时的用途是什么?
答案 0 :(得分:148)
是。您需要在表名前加上“#”(哈希)来创建临时表。
如果您以后不需要桌子,请继续&创造它。 临时表与普通表非常相似。但是,它在tempdb中创建。 此外,它只能通过当前会话访问,即对于EG:如果另一个用户试图访问您创建的临时表,他将无法这样做。
“##”(双重哈希创建“全局”临时表,也可以被其他会话访问。
有关临时表的基础知识,请参阅以下链接: http://www.codeproject.com/Articles/42553/Quick-Overview-Temporary-Tables-in-SQL-Server-2005
如果您的表格内容少于5000行&不包含数据类型,如nvarchar(MAX),varbinary(MAX),请考虑使用表变量。
它们是最快的,因为它们就像存储在RAM中的任何其他变量一样。 They are stored in tempdb as well, not in 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
答案 1 :(得分:14)
这两个表ItemBack1
和#ItemBack1
之间的区别在于第一个表是持久性的(永久性的),而另一个表是临时的。
现在再次看一下你的问题
是否有必要使用#在sql server中创建临时表?
答案是是,因为如果没有前面的#
表,它将不是一个临时表,它将独立于所有会话和范围。