SQL臨時表和表變數

2022-02-01 00:46:31 字數 2036 閱讀 9002

表變數:儲存在記憶體中,作用域是指令碼的執行過程中,指令碼執行完畢之後就會釋放記憶體,適合短時間內儲存資料量小的資料集。

優點:使用靈活,使用完之後立即釋放,不占用物理儲存空間

缺點:只適合較小資料量的暫時儲存,不能建索引

,資料量稍大時查詢效率慢,佔記憶體

使用臨時表和表變數的資料量大小沒有具體的臨界值,dba建議1000條資料,查詢列不要太多的情況下。

臨時表:臨時表是儲存在物理硬碟中的,建表位置在tempdb庫中, 可以長久儲存資料

優點:能夠長久儲存資料,可以建立索引,和普通的物理表一樣,能儲存大量資料

缺點:不方便使用,使用完之後要手動的drop,不然就會一直存在(此次連線關閉後就沒了)

臨時表

1.select

into #filterlist from

table 。。。。。

2.create

table #tegeb ( number int , amount decimal, ststus varchar )

insert

into #tegeb select

top10 number, amount,atatus from business.dbo.order with

(nolock)

select

*from #tegeb //臨時表

一直存在,直到鏈結關閉

drop

table dbo.#tegeb //必須手動drop

表變數

1. declare

@temp

table ( number

int , amount decimal, ststus varchar ) insert

into

@temp

select

top10

number, amount,status from business.dbo.order

select

*from

@temp

//已經不存在了

set

statistics profile on

:顯示分析、編譯和執行查詢所需的時間(以毫秒為單位)。

setstatistics io on

:報告與語句內引用的每個表的掃瞄數、邏輯讀取數(在快取記憶體中訪問的頁數)和物理讀取數(訪問磁碟的次數)有關的資訊。

setstatistics time on:顯示每個查詢執行後的結果集,代表查詢執行的配置檔案。

使用方法:開啟sql server 查詢分析器,輸入以下語句:

set

statistics profile on

setstatistics io on

setstatistics time on

go/*

--sql指令碼開始

*/select

[testcase

]from

[testcaseselect]go

/*--sql指令碼結束

*/set

statistics profile off

setstatistics io off

setstatistics time off

setstatistics io on

--關閉有關由transact-sql 語句生成的磁碟活動量的資訊

setstatistics io off

--顯示[返回有關語句執**況的詳細資訊,並估計語句對資源的需求]

set showplan_all on

--關閉[返回有關語句執**況的詳細資訊,並估計語句對資源的需求]

set showplan_all off

SQL 表變數和臨時表

sql 表變數和臨時表 表變數 儲存在記憶體中,作用域是指令碼的執行過程中,指令碼執行完畢之後就會釋放記憶體,適合短時間內儲存資料量小的資料集。優點 使用靈活,使用完之後立即釋放,不占用物理儲存空間 缺點 只適合較小資料量的暫時儲存,不能建索引,資料量稍大時查詢效率慢,佔記憶體 使用臨時表和表變數的...

SQL 表變數與臨時表

表變數在sql server 2000中首次被引入。表變數的具體定義包括列定義,列名,資料型別和約束。而在表變數中可以使用的約束包括主鍵約束,唯一約束,null約束和check約束 外來鍵約束不能在表變數中使用 定義表變數的語句是和正常使用create table定義表語句的子集。只是表變數通過de...

mysql表變數臨時表 表變數和臨時表詳解

首先讓我們來看看什麼是表變數和臨時表。sql server 表變數 1.初識表變數 表變數在sql server 2000中首次被引用。表變數的定義和建立乙個表大致相同,只不過是使用declare variable而不是create table,表變數定義包括列定義,列名,資料型別和約束 可用的約束...