临时表-表变量-CTE 比较

SET STATISTICS TIME ON
SET STATISTICS IO ON


--1.#临时表
SELECT FID,FOrderNumber,FUserID,FCompanyID,FCreateTime
INTO #temp
FROM dbo.TOrders
WHERE FID<=500

SELECT * FROM #temp

TRUNCATE TABLE #temp
DROP TABLE #temp


SET STATISTICS TIME OFF
SET STATISTICS IO OFF
 SQL Server 执行时间:
   CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。
表 'TOrders'扫描计数 1,逻辑读取 12 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。

 SQL Server 执行时间:
   CPU 时间 = 0 毫秒,占用时间 = 1 毫秒。

(
452 行受影响) SQL Server 分析和编译时间: CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。 (452 行受影响) 表 '#temp_______________________________________________________________________________________________________________00000000000E'扫描计数 1,逻辑读取 3 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。 SQL Server 执行时间: CPU 时间 = 0 毫秒,占用时间 = 115 毫秒。 SQL Server 执行时间: CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。 SQL Server 执行时间: CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。

 

 

SET STATISTICS TIME ON
SET STATISTICS IO ON


--2.@表变量
DECLARE @t TABLE 
(
    FID INT,
    FOrderNumber VARCHAR(100),
    FUserID INT,
    FCompanyID INT,
    FCreateTime DATETIME
)
INSERT INTO @t (FID,FOrderNumber,FUserID,FCompanyID,FCreateTime)
SELECT FID,FOrderNumber,FUserID,FCompanyID,FCreateTime 
FROM dbo.TOrders
WHERE FID<=500

SELECT * FROM @t


SET STATISTICS TIME OFF
SET STATISTICS IO OFF
 SQL Server 执行时间:
   CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。
表 '#B12AA4C0'扫描计数 0,逻辑读取 454 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 'TOrders'扫描计数 1,逻辑读取 12 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。

 SQL Server 执行时间:
   CPU 时间 = 0 毫秒,占用时间 = 1 毫秒。

(
452 行受影响) (452 行受影响) 表 '#B12AA4C0'扫描计数 1,逻辑读取 3 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。 SQL Server 执行时间: CPU 时间 = 0 毫秒,占用时间 = 50 毫秒。

 

 

SET STATISTICS TIME ON
SET STATISTICS IO ON


--3.CTE
;WITH cte(FID,FOrderNumber,FUserID,FCompanyID,FCreateTime)
AS
(
    SELECT FID,FOrderNumber,FUserID,FCompanyID,FCreateTime 
    FROM dbo.TOrders
    WHERE FID<=500
)

SELECT * FROM cte


SET STATISTICS TIME OFF
SET STATISTICS IO OFF
 SQL Server 执行时间:
   CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。

(
452 行受影响) 表 'TOrders'扫描计数 1,逻辑读取 12 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。 SQL Server 执行时间: CPU 时间 = 0 毫秒,占用时间 = 107 毫秒。

 

posted @ 2017-04-25 23:06  茗::流  阅读(186)  评论(0)    收藏  举报
如有雷同,纯属参考。如有侵犯你的版权,请联系我。