SQL臨時表和表變量


表變量:存儲在內存中,作用域是腳本的執行過程中,腳本執行完畢之后就會釋放內存,適合短時間內存儲數據量小的數據集。

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

缺點:只適合較小數據量的暫時存儲,不能建索引,數據量稍大時查詢效率慢,占內存

 

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

 

臨時表:臨時表是存儲在物理硬盤中的,建表位置在tempdb庫中, 可以長久存儲數據

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

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

 

具體使用:

臨時表

1.SELECT into #filterList  from table 。。。。。


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

insert into #tegeb SELECT TOP 10 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 top 10  number, amount,status  FROM business.dbo.order

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM