为什么SQL语句Where 1=1 and在SQL Server中不影响性能

2025-03-25 01:36:52
推荐回答(1个)
回答1:

因为筛选条件里1=1成立 ,该表达式将始终返回布尔值True(真)
"Where 1=1 and "实际等于 Where 表达式1(1=1)=true and 表达式2
当表达式2=True 时
Where true and true
两个条件都为“真”,“真”与“真”返回“真”
当表达式2=false 时
Where true and false
两个条件一“真”一“假”,“真”与“假”返回“假”
所以SQL语句筛选表达式(1=1)对整体条件判断结果无影响,实质筛选取决于and后面的条件筛选结果。

我们扩展看一下另一种写法"Where 1>1 and "
1>1不成立,该表达式将始终返回布尔值False(假)
当表达式2=True 时
两个条件一“假”一“真”,“假”与“真”返回“假”
当表达式2=False 时
两个条件均为“假”,假”与“假”返回“假”
此时不管and后面的条件筛选结果如何,"Where 1>1 and "整体结果将始终为”假“,SQL语句将始终返回空记录集,and 后面的条件对整体结果无影响。

当我们只需要表结构而不需要数据时,我们可以运行下列语句,例如:
select * from tableName where 1>1;
该语句将返回空记录集,对于只需要知道数据结构的情形下,这种写法对于减轻网络负担节约系统开销特别有帮助。