【问题标题】:is sqlite short circuit in WHERE [duplicate]在 WHERE 中是 sqlite 短路 [重复]
【发布时间】:2013-11-07 13:06:16
【问题描述】:

例如:

select * from A where 
predicate1 and 
predicate2 and 
predicate3;

如果 predicate1 返回 false,程序是否会继续评估其他谓词?干杯。

【问题讨论】:

  • 你的谓词有副作用吗?

标签: sql sqlite


【解决方案1】:

优化器可能会重新排序谓词,在一般情况下,所有谓词都会被执行:

sqlite> .explain on sqlite> 解释选择 1,其中 11=22 和 33=44; addr 操作码 p1 p2 p3 p4 p5 注释 ---- ------------- ---- ---- ---- ------------- -- ------ -------- 0 轨迹 0 0 0 00 1 整数 11 3 0 00 2 整数 22 4 0 00 3 等式 4 2 3 72 4 整数 33 3 0 00 5 整数 44 5 0 00 6 等式 5 4 3 72 7 和 4 2 1 00 8 如果不是 1 12 1 00 9 转到 0 13 0 00 10 整数 1 6 0 00 11 结果行 6 1 0 00 12 暂停 0 0 0 00 13 转到 0 10 0 00

【讨论】:

  • 简短的回答是否定的,或者?
  • SO 不允许像“是”或“否”这样简短的评论,所以我必须将您引荐给答案的第一句话。
猜你喜欢
  • 2015-03-10
  • 2017-11-06
  • 1970-01-01
  • 2013-02-03
  • 2018-07-19
  • 1970-01-01
  • 2014-12-01
  • 1970-01-01
  • 2013-05-31
相关资源
最近更新 更多