SQL 表變數和臨時表

2022-01-19 01:02:16 字數 1700 閱讀 1883

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,表變數定義包括列定義,列名,資料型別和約束 可用的約束...