Monday, December 12, 2011

#TEMPTABLE 、##TEMPTABLE 、@TEMPTABLE 區別?!

下列三種方式的區別 :
 
--方法一 
CREATE TABLE #TEMP(
  NAME CHAR(20),
  ID   CHAR(10)
)
 
--方法二 
CREATE TABLE ##TEMP(
  NAME CHAR(20),
  ID   CHAR(10)
)
 
--方法三 
DECLARE @TEMP TABLE (
  NAME CHAR(20),
  ID   CHAR(10)
)
 
INSERT INTO #TEMP VALUES('TOM','A123456789')
INSERT INTO ##TEMP VALUES('ARIC','G123212343')
INSERT INTO @TEMP  VALUES ('BILL','M123465324')
 
方法一 VS. 方法二
1.兩者均在tempdb資料庫中建立起資料表(存於DISK中),可利用 DROP TABLE 刪除暫存資料表,或是建立該暫存資料表的連線結束時,SQL Server 會自動將其刪除。 
2.#TEMP資料只有建立者可以取用,其他人不可取用;##TEMP則是所有人均可取用
 
方法一二 VS 方法三
1.前者需用到DISK I/O;後者則是儲存於記憶體中
2.前者需使用DROP或是連線結束後暫存表才會消失;後者不需使用DROP指令,當批次指令執行完成後即自動被刪除