我搜索但找不到适合 SQL Server 2005/2008 新手的临时表使用教程。我想了解临时表与普通表相比的优缺点,它的生命周期以及临时表是如何共享的(在同一个会话中,跨会话)?
提前谢谢,乔治
我搜索但找不到适合 SQL Server 2005/2008 新手的临时表使用教程。我想了解临时表与普通表相比的优缺点,它的生命周期以及临时表是如何共享的(在同一个会话中,跨会话)?
提前谢谢,乔治
有两种创建临时表的方法。这将创建表并从 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 对这两个表进行分组。
这是创建临时表并从中选择的快速 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
以下指南似乎是一个很好的起点,可以了解有关临时表(和表变量)的详细信息,包括生命周期、共享等:
SQL Server 临时表真的有必要吗?出于性能原因,还考虑使用临时表。
将它们与“普通”表进行比较,我想说最大的区别本质上是普通表在数据库中持久存在,因此当您需要存储正在使用的数据时应该使用临时表,如果只是在查询/存储过程等的上下文...