我搜索过但无法在SQL Server 2005/2008中为新手找到一个好的临时表使用教程。我想学习临时表的优缺点,比较普通表,它的生命周期以及如何共享临时表(在同一个会话中,交叉会话)?
提前谢谢, 乔治答案 0 :(得分:6)
有两种方法可以创建临时表。 这个将创建表并从PHYSICALTABLE插入数据;
SELECT FIELD1,FIELD2,FIELD3 INTO TempTable FROM PHYSICALTABLE;
另一种方法是使用CREATE TABLE方法;
CREATE TABLE #TempTable (ID int,NAME varchar(50));
INSERT INTO #TempTable(ID,NAME) VALUES(1,'PERSON');
关闭连接后,或者对它们使用DROP TABLE命令时,服务器将删除临时表。除非使用全局临时表(通过在表名中添加##),否则每个连接只能访问自己的临时表。我读过临时表会导致大表的性能下降,所以我通常只使用临时表来UNION两个表然后分组+ SUM这两个。
答案 1 :(得分:2)
这是一个快速的SQL来创建临时表并从中进行选择
-- Create Temp table
CREATE TABLE #temps
(
VId int,
first VARCHAR( 255 ),
surname VARCHAR( 255 ),
DOB DATETIME
PRIMARY KEY (VId)
)
-- Insert some test data
Insert into #temps (Vid, first, surname, DOB)
VALUES (1, 'Bob', 'Jennings','23 Feb 1970')
-- Insert some test data
Insert into #temps (Vid, first, surname, DOB)
VALUES (2, 'John', 'Doe','14 Oct 1965')
-- Select data from the temp table
Select * from #temps
-- Run if you wish to drop the table
-- DROP T ABLE #temps
答案 2 :(得分:1)
这是一篇关于SQL表的好文章:
http://databases.aspfaq.com/database/should-i-use-a-temp-table-or-a-table-variable.html
对我来说非常有用:) 享受
答案 3 :(得分:1)
以下指南是开始获取有关临时表(和表变量)的详细信息的好地方,包括生命周期,共享等:
Are SQL Server Temp Tables Really Necessary?还考虑了出于性能原因使用临时表。
将它们与“普通”表进行比较我会说最大的区别主要是普通表在数据库中存在,因此应该在需要存储正在使用的数据时使用,如果只是临时表应该使用在查询/存储过程等的上下文中工作......