fra*_*sco 3 sql t-sql sql-server performance sql-server-2005
可能重复:
SQL WHERE子句是否已短路评估?
关于此查询,我有以下问题:
select * from sometable
where 1=1 or (select count(*) from table2 > 0)
Run Code Online (Sandbox Code Playgroud)
如果第一个条件为true(1=1),SQL Server是否仍然执行内部选择?或者在第一个条件为真时停止(如C)
当(1 = 1)为真时停止.您可以使用Ctrl-M然后按Ctrl-E轻松检查
考虑这个查询
select * from master..spt_values
where 1=1 or (select count(*) from master..sysobjects) > 0
Run Code Online (Sandbox Code Playgroud)
执行计划仅显示扫描master..spt_values并且没有活动sysobjects.
与C相反,当LEFTMOST条件为真时,它不会停止,而是查询优化器独立于所显示的顺序进行计算,这是评估的最低成本.在常数的情况下,1 vs 1胜利者是明确的.
| 归档时间: |
|
| 查看次数: |
307 次 |
| 最近记录: |