小编典典

SQL Server性能提示

sql

关于此查询,我有以下问题:

select * from sometable 
where 1=1 or (select count(*) from table2 > 0)

如果第一个条件为true(1=1),SQL Server仍会进行内部选择吗?还是在第一个条件为真时停止(例如C)


阅读 202

收藏
2021-04-28

共1个答案

小编典典

当(1 = 1)为true时,它将停止。您可以先按Ctrl-M再按Ctrl-E轻松检查

考虑这个查询

select * from master..spt_values
where 1=1 or (select count(*) from master..sysobjects) > 0

执行计划仅显示的扫描,master..spt_values而没有的活动sysobjects

与C相反,当 LEFTMOST 条件为true时,它不会停止,而是查询优化器 独立于给出的顺序
工作,这是评估成本最低的方法。在常数的情况下,1 vs 1获胜者是显而易见的。

2021-04-28