首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

为啥有OR比无OR执行效率还高

2013-02-04 
为什么有OR比无OR执行效率还高?相同的数据量declare @Deleted bitset @Deleted 0select a.CustomerID fr

为什么有OR比无OR执行效率还高?
相同的数据量

declare @Deleted bit
set @Deleted = 0
select a.CustomerID from dbo.Biz_Customer A
JOIN Biz_Order B ON A.CustomerID=B.CustomerID
WHERE (A.Deleted IS NULL OR a.Deleted = @Deleted)


---------------------
SQL Server 分析和编译时间: 
   CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。

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

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

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

(8138 行受影响)
表 'Biz_Order'。扫描计数 1,逻辑读取 41 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 'Biz_Customer'。扫描计数 1,逻辑读取 226 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。

 SQL Server 执行时间:
   CPU 时间 = 31 毫秒,占用时间 = 141 毫秒。


-----------------------
set statistics io on
set statistics time on

declare @Deleted bit
set @Deleted = 0
select a.CustomerID from dbo.Biz_Customer A
JOIN Biz_Order B ON A.CustomerID=B.CustomerID
WHERE   a.Deleted = @Deleted
 


------------------------
SQL Server 分析和编译时间: 
   CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。

 SQL Server 执行时间:
   CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。
SQL Server 分析和编译时间: 
   CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。

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

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

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

(8138 行受影响)
表 'Biz_Order'。扫描计数 1,逻辑读取 41 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 'Biz_Customer'。扫描计数 1,逻辑读取 226 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。

(1 行受影响)

 SQL Server 执行时间:
   CPU 时间 = 31 毫秒,占用时间 = 146 毫秒。
SQL Server 分析和编译时间: 
   CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。

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

[解决办法]
你上面的两句,性能其实一样

热点排行