SQL语句与不可能的常量比较

时间:2016-02-17 09:51:05

标签: sql sql-server

我有这个SQL查询:

SELECT * FROM [table] WHERE 2=3;

显然,查询将返回0行,但我的问题如下。 SQL Server引擎在执行选择之前是否评估where条件?

换句话说,SQL Server是否检测到where条件不可能并自动返回0行?

2 个答案:

答案 0 :(得分:9)

如果使用这样的谓词检查简单查询的执行计划,您将看到SQL Server使用Constant Scan来确定返回零结果。甚至没有触及索引或表格。

SELECT * FROM [Production].[Product];
SELECT * FROM [Production].[Product] WHERE 1=0;

enter image description here

答案 1 :(得分:0)

基本上订单是here

这是在SQL上执行查询的顺序:

  
      
  1. FROM
  2.   
  3. ON
  4.   
  5. OUTER
  6.   
  7. WHERE
  8.   
  9. GROUP BY
  10.   
  11. CUBE | ROLLUP
  12.   
  13. HAVING
  14.   
  15. 选择
  16.   
  17. DISTINCT 10 ORDER BY
  18.   
  19. TOP
  20.