日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

表变量与临时表的优缺点

發(fā)布時間:2023/12/18 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 表变量与临时表的优缺点 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
表變量與臨時表的優(yōu)缺點

什么情況下使用表變量?什么情況下使用臨時表?

表變量:??

? DECLARE @tb? table(id?? int?? identity(1,1), name?? varchar(100))???
? INSERT @tb??

? SELECT id, name?
? FROM mytable?

? WHERE name like ‘zhang%’?

?

臨時表:?

? SELECT name, address
? INTO #ta?? FROM mytable??
? WHERE name like ‘zhang%’

?

表變量和臨時表的比較:

  • 臨時表是利用了硬盤(tempdb數(shù)據(jù)庫) ,表名變量是占用內(nèi)存,因此小數(shù)據(jù)量當然是內(nèi)存中的表變量更快。當大數(shù)據(jù)量時,就不能用表變量了,太耗內(nèi)存了。大數(shù)據(jù)量時適合用臨時表。
  • 表變量缺省放在內(nèi)存,速度快,所以在觸發(fā)器,存儲過程里如果數(shù)據(jù)量不大,應該用表變量。
  • 臨時表缺省使用硬盤,一般來說速度比較慢,那是不是就不用臨時表呢?也不是,在數(shù)據(jù)量比較大的時候,如果使用表變量,會把內(nèi)存耗盡,然后使用 TEMPDB的空間,這樣主要還是使用硬盤空間,但同時把內(nèi)存基本耗盡,增加了內(nèi)存調(diào)入調(diào)出的機會,反而降低速度。這種情況建議先給TEMPDB一次分配合適的空間,然后使用臨時表。
  • 臨時表相對而言表變量主要是多了I/O時間,但少了對內(nèi)存資源的占用。數(shù)據(jù)量較大的時候,由于對內(nèi)存資源的消耗較少,使用臨時表比表變量有更好的性能。
  • 建議:觸發(fā)器、自定義函數(shù)用表變量;存儲過程看情況,大部分用表變量;特殊的應用,大數(shù)據(jù)量的場合用臨時表。
  • 表變量有明確的作用域,在定義表變量的函數(shù)、存儲過程或批處理結(jié)束時,會自動清除表變量。
  • 在存儲過程中使用表變量與使用臨時表相比,減少了存儲過程的重新編譯量。
  • 涉及表變量的事務只在表變量更新期間存在。這樣就減少了表變量對鎖定和記錄資源的需求。
  • 表變量需要事先知道表結(jié)構(gòu),普通臨時表,只在當前會話中可用與表變量相同into一下就可以了,方便;全局臨時表:可在多個會話中使用存在于temp中需顯示的drop。(不知道表結(jié)構(gòu)情況下臨時表方便一些)
  • 全局臨時表的功能是表變量沒法達到的。
  • 表變量不必刪除,也就不會有命名沖突,臨時表特別是全局臨時表用的時候必須解決命名沖突。
  • 應避免頻繁創(chuàng)建和刪除臨時表,減少系統(tǒng)表資源的消耗。
  • 在新建臨時表時,如果一次性插入數(shù)據(jù)量很大,那么可以使用select into代替create table,避免log,提高速度;如果數(shù)據(jù)量不大,為了緩和系統(tǒng)表的資源,建議先create table,然后insert。
  • 如果臨時表的數(shù)據(jù)量較大,需要建立索引,那么應該將創(chuàng)建臨時表和建立索引的過程放在單獨一個子存儲過程中,這樣才能保證系統(tǒng)能夠很好的使用到該臨時表的索引。
  • 如果使用到了臨時表,在存儲過程的最后務必將所有的臨時表顯式刪除,先truncate table,然后drop table,這樣可以避免系統(tǒng)表的較長時間鎖定。
  • 慎用大的臨時表與其他大表的連接查詢和修改,減低系統(tǒng)表負擔,因為這種操作會在一條語句中多次使用tempdb的系統(tǒng)表。

轉(zhuǎn)載于:https://www.cnblogs.com/BrokenIce/p/5713238.html

總結(jié)

以上是生活随笔為你收集整理的表变量与临时表的优缺点的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。