[SQL SERVER][Performance]資料表值變數和暫存資料表效能測試
今天發現資料表值參數處理小資料量有不賴的執行效能,
早期自己都會利用暫存資料表來處理,但在SQL2008中可以有另外的選擇了(多了資料表值參數新類型),
這篇我大概測試資料表值參數執行效能。
資料表參數部分資訊
動作:分別對資料表值參數和暫存資料表執行三次相同作業(資料量<=1000)。
第一次:
TVP
ET STATISTICS TIME ON
DECLARE @mytmp TABLE
(
id int,
name nvarchar(10),
email nvarchar(100)
)
INSERT INTO @mytmp
SELECT * FROM dbo.userd
SET STATISTICS TIME OFF
TMP
SET STATISTICS TIME ON
create table ##mytmp
(
id int,
name nvarchar(10),
email nvarchar(100)
)
INSERT INTO ##mytmp
SELECT * FROM dbo.userd
SET STATISTICS TIME OFF
第二次
TVP
TMP
第三次
TVP
TMP
結果:
加入簡單邏輯處理(join大Table比較可以看出效果)
TVP
TMP
結果:
結論:
資料表變數不存在記憶體並使用tempdb資源(建立temptable)。
處理大資料表效能差(和暫存資料表最大差異為統計值)。
參考