我想知道在SQL请求中是否使用了多个AND语句,是每个AND执行还是仅在前一个AND正常时触发?
在这个例子中:
SELECT * FROM my_table WHEN a > 5 AND b < 10
如果条件a> 5是不受尊重的,将测试b <1。 10被触发?或者在JAVA中它将仅在&gt;时触发。 5有效吗?
感谢您的帮助;)
再见!
答案 0 :(得分:2)
通常,SQL引擎会实现“短路”,这意味着当最终值已知时,条件的执行会停止。
然而,这非常不重要。首先,您不能依赖于条件评估的顺序。所以,你不知道哪个会先评估。其次,引擎可以使用替代执行路径(例如使用索引)。
最后,这种短路通常对性能的影响很小。读取数据通常更为重要。一个例外是当其中一个条件使用非常复杂的函数时。在这种情况下,您可以使用case
或子查询来确保执行顺序。