表變數和臨時表的差別 (以前把表變數叫成變數表了,哎。。。)
首先,本文摘抄了別人的文章以及書籍。
悲催了。在ef4中使用臨時表無法獲得返回型別的變數。因此,全部弄回了表變數。寫了一坨重複程式碼。靠!這個問題一定要解決掉!!!!!!!!
1、臨時表
臨時表包括:以#開頭的區域性臨時表,以##開頭的全域性臨時表。
a、儲存
不管是區域性臨時表,還是全域性臨時表,都會放存放在tempdb資料庫中。
b、作用域
區域性臨時表:對當前連線有效,只在建立它的儲存過度、批處理、動態語句中有效,類似於C語言中區域性變數的作用域。
全域性臨時表:在所有連線對它都結束引用時,會被刪除,對建立者來說,斷開連線就是結束引用;對非建立者,不再引用就是結束引用。
但最好在用完後,就通過drop table 語句刪除,及時釋放資源。
c、特性
與普通的表一樣,能定義約束,能建立索引,最關鍵的是有資料分佈的統計資訊,這樣有利於優化器做出正確的執行計劃,但同時它的開銷和普通的表一樣,一般適合資料量較大的情況。
有一個非常方便的select ... into 的用法,這也是一個特點。
2、表變數
a、儲存
表變數存放在tempdb資料庫中。
b、作用域
和普通的變數一樣,在定義表變數的儲存過程、批處理、動態語句、函式結束時,會自動清除。
c、特性
可以有主鍵,但不能直接建立索引,也沒有任何資料的統計資訊。表變數適合資料量相對較小的情況。
必須要注意的是,表變數不受事務的約束,
摘抄2
指令碼之家的這篇文章描述的比較詳細
摘抄3
部落格園這篇也挺好。留給自己作為參考。最快也得等到晚上了。。。
自己寫的一個儲存過程,朋友指出的問題
1、
你前面沒有建立臨時表的語句 :說明在前面要宣告臨時表
2、沒建立的話用不著清表,要麼清,要麼刪,不用清完後在刪
3、SELECT * into 少用些
相關文章
- 再議臨時表和表變數變數
- SQL Server中的臨時表和表變數SQLServer變數
- SQL Server中臨時表與表變數的區別SQLServer變數
- SQLServer表變數和臨時表系列之概念篇SQLServer變數
- Sqlserver 關於臨時表和表變數的總結SQLServer變數
- SQLSERVER 臨時表和表變數到底有什麼區別?SQLServer變數
- SQLServer臨時表和表變數系列之踢館篇SQLServer變數
- TempDB 中表變數和區域性臨時表的對比變數
- sql server 儲存過程中使用變數表,臨時表的分析(續)SQLServer儲存過程變數
- 關於SQLServer2005的學習筆記——臨時表、表變數和CTESQLServer筆記變數
- Lotus CGI 變數表及其用法變數
- 變數的分類(臨時(本地)變數、環境變數、全域性變數和系統變數)變數
- PHP核心研究:HASH表和變數薦PHP變數
- Flowable實戰(五)表單和流程變數變數
- ORACLE中實現表變數的方法Oracle變數
- 成員變數、全域性變數、例項變數、類變數、靜態變數和區域性變數的區別變數
- 成員變數和區域性變數的區別變數
- 不使用臨時變數交換兩個變數的值變數
- oracle裡面的幾個環境變數表Oracle變數
- 成員變數和區域性變數變數
- Python中類變數、成員變數、區域性變數的區別Python變數
- JavaScript兩個變數交換值(不使用臨時變數)JavaScript變數
- JVM-棧幀之區域性變數表JVM變數
- 流程執行期儲存流程變數的表有哪些變數
- 將表名作為繫結變數的非法操作變數
- 表變化的monitoring 及引數 statistics_level
- 記憶體表和臨時表的區別記憶體
- Java基礎-成員變數和區域性變數的區別Java變數
- 如何不使用臨時變數,交換兩個變數的值。變數
- Spark 外部變數和BroadCast變數的區別Spark變數AST
- 全域性變數和靜態變數的區別變數
- 記一次,因表變數導致SQL執行效率變慢變數SQL
- 第2節:mysql.gtid_executed表/gtid_executed變數/gtid_purged變數的更改時機MySql變數
- 靜態變數和例項變數區別?變數
- oracle10G的表分割槽與繫結變數Oracle變數
- ORACLE臨時表和SQLSERVER臨時表異同OracleSQLServer
- 修改全域性變數時,可變型別和不可變型別的區別變數型別
- 變數含義,臨近變化變數