首页 > 解决方案 > 如果第一个条件为 FALSE,那么在 SQL Server 中检查第二个条件?

问题描述

在一个where子句中,如果第一个条件为 FALSE,那么在 SQL Server 中检查第二个条件?

例如

select * 
from users
where (condition 1) AND (condition 2)

如果条件 1 为 False,是否会检查条件 2?

标签: sql-serverwhere-clause

解决方案


它是非确定性的。您不能依赖评估顺序。

SQL Server 查询优化器负责解析 T-SQL 查询并根据表大小、索引等创建执行计划。因此,针对相同数据库模式的相同 T-SQL 语句可能会根据数据库内容、配置等不同执行。

查询优化器优先考虑执行速度,并能够并行执行单个 T-SQL 语句。过滤子句的执行极不可能一个接一个地执行。


推荐阅读