我搜索了但在SQL Server 2005/2008中找不到一個新手的臨時表使用教程。我想了解臨時表與正常表相比的優缺點,它的生命週期以及臨時表如何共享(在同一會話中,跨會話)?在SQL Server中推薦一個很好的臨時表教程
由於事先 喬治
我搜索了但在SQL Server 2005/2008中找不到一個新手的臨時表使用教程。我想了解臨時表與正常表相比的優缺點,它的生命週期以及臨時表如何共享(在同一會話中,跨會話)?在SQL Server中推薦一個很好的臨時表教程
由於事先 喬治
有兩種方法可以創建臨時表。 這將創建表並從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命令,臨時表將被服務器刪除。除非使用全局臨時表(通過將##添加到表名中),否則每個連接只能訪問其自己的臨時表。我讀過臨時表會導致大表性能下降,所以我通常只使用臨時表來聯合兩個表,然後用+ SUM對這兩個表進行分組。
這裏是關於SQL表一篇好文:
http://databases.aspfaq.com/database/should-i-use-a-temp-table-or-a-table-variable.html
這是對我很有用:) 享受
以下指南將出現不錯的開端有關臨時的詳細信息表(&表變量)包括生命期,共享等:
Are SQL Server Temp Tables Really Necessary?還着眼於使用臨時表的性能的原因。
將它們與'普通'表比較我會說最大的不同之處在於普通表在數據庫中存在,因此應該在您需要存儲正在使用的數據時使用,而應該使用臨時表只是一個查詢/存儲過程等環境中工作......
這裏是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連接時,沒有稱爲客戶端的參數。 – George2 2009-06-18 08:11:34