SQL链AND运算符,都执行了吗?

时间:2016-05-28 11:36:30

标签: sql sql-execution-plan

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

在这个例子中:

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

如果条件a> 5是不受尊重的,将测试b <1。 10被触发?或者在JAVA中它将仅在&gt;时触发。 5有效吗?

感谢您的帮助;)

再见!

1 个答案:

答案 0 :(得分:2)

通常,SQL引擎会实现“短路”,这意味着当最终值已知时,条件的执行会停止。

然而,这非常不重要。首先,您不能依赖于条件评估的顺序。所以,你不知道哪个会先评估。其次,引擎可以使用替代执行路径(例如使用索引)。

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