在SQL Server中推荐一个好的临时表教程

时间:2009-06-18 07:37:55

标签: sql sql-server temp-tables

我搜索过但无法在SQL Server 2005/2008中为新手找到一个好的临时表使用教程。我想学习临时表的优缺点,比较普通表,它的生命周期以及如何共享临时表(在同一个会话中,交叉会话)?

提前谢谢, 乔治

4 个答案:

答案 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?还考虑了出于性能原因使用临时表。

将它们与“普通”表进行比较我会说最大的区别主要是普通表在数据库中存在,因此应该在需要存储正在使用的数据时使用,如果只是临时表应该使用在查询/存储过程等的上下文中工作......