我有这个SQL查询:
SELECT * FROM [table] WHERE 2=3;
显然,查询将返回0行,但我的问题如下。 SQL Server引擎在执行选择之前是否评估where条件?
换句话说,SQL Server是否检测到where条件不可能并自动返回0行?
答案 0 :(得分:9)
如果使用这样的谓词检查简单查询的执行计划,您将看到SQL Server使用Constant Scan
来确定返回零结果。甚至没有触及索引或表格。
SELECT * FROM [Production].[Product];
SELECT * FROM [Production].[Product] WHERE 1=0;
答案 1 :(得分:0)
基本上订单是here
这是在SQL上执行查询的顺序:
- FROM
- ON
- OUTER
- WHERE
- GROUP BY
- CUBE | ROLLUP
- HAVING
- 选择
- DISTINCT 10 ORDER BY
- TOP
醇>