sql 表變數和臨時表
表變數:儲存在記憶體中,作用域是指令碼的執行過程中,指令碼執行完畢之後就會釋放記憶體,適合短時間內儲存資料量小的資料集。
優點:使用靈活,使用完之後立即釋放,不占用物理儲存空間
缺點:只適合較小資料量的暫時儲存,不能建索引,資料量稍大時查詢效率慢,佔記憶體
使用臨時表和表變數的資料量大小沒有具體的臨界值,dba建議1000條資料,查詢列不要太多的情況下。
臨時表:臨時表是儲存在物理硬碟中的,建表位置在tempdb中, 可以長久儲存資料
優點:能夠長久儲存資料,可以建立索引,和普通的物理表一樣,能儲存大量資料
缺點:不方便使用,使用完之後要手動的drop,不然就會一直存在
具體使用:
臨時表:
1.select into #filtersolist from table
2.create table #tegeb ( sonumber int , soamount decimal, ststus varchar ) insert into #tegeb select top 10 sonumber, soamount,status from nsls.dbo.newegg_somaster with(nolock)
select * from #tegeb //一直都存在
drop table dbo.#tegeb //必須手動drop
表變數:
1. declare @temp table ( sonumber int , soamount decimal, ststus varchar ) insert into @temp select top 10 sonumber, soamount,status from nsls.dbo.newegg_somaster
select * from @temp //已經不存在了
檢視sql執行效率的語句:
set statistics profile on:顯示分析、編譯和執行查詢所需的時間(以毫秒為單位)。
set statistics io on:報告與語句內引用的每個表的掃瞄數、邏輯讀取數(在快取記憶體中訪問的頁數)和物理讀取數(訪問磁碟的次數)有關的資訊。
set statistics time on:顯示每個查詢執行後的結果集,代表查詢執行的配置檔案。
使用方法:開啟sql server 查詢分析器,輸入以下語句:
set statistics profile on
set statistics io on
set statistics time on
go /*--你的sql指令碼開始*/
select [testcase] from [testcaseselect]
go /*--你的sql指令碼結束*/
set statistics profile off
set statistics io off
set statistics time off
set statistics io on
--關閉有關由transact-sql 語句生成的磁碟活動量的資訊
set statistics io off
--顯示[返回有關語句執**況的詳細資訊,並估計語句對資源的需求]
set showplan_all on
--關閉[返回有關語句執**況的詳細資訊,並估計語句對資源的需求]
set showplan_all off
SQL臨時表和表變數
表變數 儲存在記憶體中,作用域是指令碼的執行過程中,指令碼執行完畢之後就會釋放記憶體,適合短時間內儲存資料量小的資料集。優點 使用靈活,使用完之後立即釋放,不占用物理儲存空間 缺點 只適合較小資料量的暫時儲存,不能建索引 資料量稍大時查詢效率慢,佔記憶體 使用臨時表和表變數的資料量大小沒有具體的臨界...
SQL 表變數與臨時表
表變數在sql server 2000中首次被引入。表變數的具體定義包括列定義,列名,資料型別和約束。而在表變數中可以使用的約束包括主鍵約束,唯一約束,null約束和check約束 外來鍵約束不能在表變數中使用 定義表變數的語句是和正常使用create table定義表語句的子集。只是表變數通過de...
mysql表變數臨時表 表變數和臨時表詳解
首先讓我們來看看什麼是表變數和臨時表。sql server 表變數 1.初識表變數 表變數在sql server 2000中首次被引用。表變數的定義和建立乙個表大致相同,只不過是使用declare variable而不是create table,表變數定義包括列定義,列名,資料型別和約束 可用的約束...