如果我们在SQL查询的where子句中有多个AND条件,并且如果记录的第一个条件为false,那么它是否会检查另一个AND条件。
在编程中我们使用&&运算符检查多个条件,如果第一个条件发现为false,那么它不适用于另一个条件,所以我的查询是它是否也适用于SQL条件?
示例:
Select * from tablename where column is not null and column > 0 and column <> 1
答案 0 :(得分:4)
SQL是声明性的。不是程序性的。
优化器可以使用短路评估,也可以不使用。
它也可以将其转换为不同的东西。如果column
是整数类型,则所有三个条件都会折叠为
WHERE column > 1
同样,优化器可能会发现某些条件通过检查约束或查询中的其他谓词保证为真或假,并且根本不需要进行评估。或者使用访问路径(例如过滤索引)来保证所有行与谓词的一部分匹配,因此不需要运行时评估。
答案 1 :(得分:-3)
看起来像这样
SELECT * FROM tablename
WHERE (column != null AND column <> 1) AND (column > 0)