IN、EXISTS、INNER JOIN 比较

--1
SET STATISTICS TIME ON
SET STATISTICS IO ON

SELECT * 
FROM dbo.TOrders
WHERE FUserID IN 
(
    SELECT FID 
    FROM dbo.TAccounts WHERE FCompanyID = 36052
)

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

(37682 行受影响)
表 'Workfile'。扫描计数 0,逻辑读取 0 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 'Worktable'。扫描计数 0,逻辑读取 0 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 'TOrders'。扫描计数 1,逻辑读取 1141 次,物理读取 0 次,预读 0 次,lob 逻辑读取 31088 次,lob 物理读取 0 次,lob 预读 7625 次。
表 'TAccounts'。扫描计数 1,逻辑读取 25 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。

 SQL Server 执行时间:
   CPU 时间 = 390 毫秒,占用时间 = 1661 毫秒。

 

 

--2
SET STATISTICS TIME ON
SET STATISTICS IO ON


SELECT a.* 
FROM dbo.TOrders AS a
WHERE EXISTS 
(
    SELECT 1 
    FROM dbo.TAccounts AS b 
    WHERE b.FID = a.FUserID  AND b.FCompanyID = 36052
)


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

(37682 行受影响)
表 'Workfile'。扫描计数 0,逻辑读取 0 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 'Worktable'。扫描计数 0,逻辑读取 0 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 'TOrders'。扫描计数 1,逻辑读取 1141 次,物理读取 0 次,预读 0 次,lob 逻辑读取 31088 次,lob 物理读取 0 次,lob 预读 7625 次。
表 'TAccounts'。扫描计数 1,逻辑读取 25 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。

 SQL Server 执行时间:
   CPU 时间 = 250 毫秒,占用时间 = 1608 毫秒。

 

 

--3
SET STATISTICS TIME ON
SET STATISTICS IO ON

SELECT a.* 
FROM dbo.TOrders AS a
INNER JOIN dbo.TAccounts AS b ON b.FID = a.FUserID  AND b.FCompanyID = 36052

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

(37682 行受影响)
表 'Workfile'。扫描计数 0,逻辑读取 0 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 'Worktable'。扫描计数 0,逻辑读取 0 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 'TOrders'。扫描计数 1,逻辑读取 1141 次,物理读取 0 次,预读 0 次,lob 逻辑读取 31088 次,lob 物理读取 0 次,lob 预读 7625 次。
表 'TAccounts'。扫描计数 1,逻辑读取 25 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。

 SQL Server 执行时间:
   CPU 时间 = 297 毫秒,占用时间 = 1633 毫秒。

 

 

 

① IN

② EXISTS

③ INNER JOIN 

目前速度比较:② > ③ > ① 

 

posted @ 2017-03-28 22:48  茗::流  阅读(458)  评论(0)    收藏  举报
如有雷同,纯属参考。如有侵犯你的版权,请联系我。