T-SQL之表變數與暫存資料表的比較

來源:互聯網
上載者:User

參考:http://www.51testing.com/html/78/n-816578-4.html

 總結

 

特性 表變數 暫存資料表
範圍 當前批處理 當前會話,嵌套預存程序,全域:所有會話
使用情境 自訂函數,預存程序,批處理 自訂函數,預存程序,批處理
建立方式 DECLARE statement only.只能通過DECLEARE語句建立

CREATE TABLE 語句

SELECT INTO 語句.

表名長度 最多128位元組 最多116位元組
列類型

可以使用自訂資料類型

可以使用XML集合

自訂資料類型和XML集合必須在TempDb內定義
Collation 字串定序繼承自當前資料庫 字串定序繼承自TempDb資料庫
索引 索引必須在表定義時建立 索引可以在表建立後建立
約束 PRIMARY KEY, UNIQUE, NULL, CHECK約束可以使用,但必須在表建立時聲明 PRIMARY KEY, UNIQUE, NULL, CHECK. 約束可以使用,可以在任何時後添加,但不能有外鍵約束
表建立後使用DDL (索引,列) 不允許 允許.
資料插入方式 INSERT 語句 (SQL 2000: 不能使用INSERT/EXEC).

INSERT 語句, 包括 INSERT/EXEC.

SELECT INTO 語句.

Insert explicit values into identity columns (SET IDENTITY_INSERT). 不支援SET IDENTITY_INSERT語句 支援SET IDENTITY_INSERT語句
Truncate table 不允許 允許
析構方式 批處理結束後自動析構 顯式調用 DROP TABLE 語句.
當前會話結束自動析構 (全域暫存資料表: 還包括當其它會話語句不在參考資料表.)
事務 只會在更新表的時候有事務,期間比暫存資料表短 正常的事務長度,比表變數長
預存程序重編譯 會導致重編譯
復原 不會被復原影響 會被復原影響
統計資料 不建立統計資料,所以所有的估計行數都為1,所以產生執行計畫會不精準 建立統計資料,通過實際的行數產生執行計畫。
作為參數傳入預存程序 僅僅在SQL Server2008, 並且必須預定義 user-defined table type. 不允許
顯式命名物件 (索引, 約束). 不允許 允許,但是要注意多使用者的問題
動態SQL 必須在動態SQL中定義表變數 可以在調用動態SQL之前定義暫存資料表

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.