SQL中表變數是否必須替代臨時表

2021-09-08 14:21:37 字數 1030 閱讀 3599

2010-09-08 17:35  佚名  網際網路  

在sql資料庫中,必須使用表變數來代替臨時表嗎?答案取決於三個因素:插入到表中的行數、從中儲存查詢的重新編譯的次數、以及查詢型別及其對效能的指數和統計資訊的依賴性。 

在某些情況下,可將乙個具有臨時表的儲存過程拆分為多個較小的儲存過程,以便在較小的單元上進行重新編譯。

通常情況下,應盡量使用表變數,除非資料量非常大並且需要重複使用表。在這種情況下,可以在臨時表上建立索引以提高查詢效能。但是,各種方案可能互不相同。microsoft 建議您做乙個測試,來驗證表變數對於特定的查詢或儲存過程是否比臨時表更有效。

declare @temp table 

( [id] int identity(1,1), 

[name] varchar(10) 

) declare @tempid int,@tempname varchar(10)

insert into @temp values('a') 

insert into @temp values('b') 

insert into @temp values('c') 

insert into @temp values('d') 

insert into @temp values('e')

--select * from @temp

while exists(select [id] from @temp) 

begin 

set rowcount 1 

select @tempid = [id],@tempname=[name] from @temp 

set rowcount 0 

delete from @temp where [id] = @tempid

print 'name:----'+@tempname 

end 

sql中表變數的不足

詳解sql中迴圈結構的使用

sql迴圈執行while控制

sql中游標巢狀迴圈的示例

sql迴圈語句示例

SQL中表變數和臨時表的優缺點

什麼情況下使用表變數?什麼情況下使用臨時表?表變數 declare tb table id int identity 1,1 name varchar 100 insert tb select id,name from mytable where name like zhang 臨時表 select...

SQLSERVER 中表變數與臨時表

sql server 中的變數表與臨時表 1.臨時表 臨時表和永久表類似,很多永久表具有的功能特性,臨時表都具有,臨時表它的建立是在tempdb中,它只有在乙個資料庫連線結束後或者由sql命名drop掉,才消失,否則他會一直存在,臨時表的建立的時候會產生sql server 系統日誌,臨時表分為兩種...

SQL 表變數與臨時表

表變數在sql server 2000中首次被引入。表變數的具體定義包括列定義,列名,資料型別和約束。而在表變數中可以使用的約束包括主鍵約束,唯一約束,null約束和check約束 外來鍵約束不能在表變數中使用 定義表變數的語句是和正常使用create table定義表語句的子集。只是表變數通過de...