SQL链式AND运算符,全部执行?

SQL chain AND operator, all executed?

我想知道在使用多个 AND 语句的 SQL 请求中,是否执行了每个 AND 或它们是否仅在前一个 AND 正常时才触发?

在这个例子中:

SELECT * FROM my_table WHEN a > 5 AND b < 10

如果不满足条件a > 5,是否会触发测试b < 10?或者像 JAVA 那样只有当 a > 5 有效时才会触发?

感谢您的帮助 ;)

再见!

一般来说,SQL 引擎会执行 "short-circuiting",这意味着条件的执行在知道最终值时停止。

然而,这并不重要。首先,您不能依赖条件评估的顺序。因此,您不知道首先评估哪个。其次,引擎可能会使用其他执行路径(例如使用索引)。

最后,这种短路通常对性能的影响很小。阅读数据通常更为重要。一个例外是当其中一个条件使用非常复杂的函数时。在这种情况下,您将使用 case 或子查询来确保执行顺序。