You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQLite中SELECT * FROM myTable WHERE 1=0是否会跳过表扫描?

SQLite中WHERE 1=0查询的实际执行逻辑

虽然EXPLAIN QUERY PLAN显示"scan table myTable",但这个查询不会执行全表扫描,而是直接返回空结果集。

原因在于:

  • SQLite的查询计划生成器(EXPLAIN QUERY PLAN展示的内容)不会提前对1=0这种恒假条件做深度逻辑优化,所以会把全表扫描列在计划中,但这只是计划层面的描述。
  • 在实际执行阶段,SQLite会直接识别WHERE 1=0是永远不成立的条件,不会去遍历表中的任何行,直接返回空结果集。

你可以通过两种方式验证:

  • 给myTable插入大量数据,执行该查询,会发现耗时几乎为0,没有全表扫描的性能开销。
  • 使用EXPLAIN(不带QUERY PLAN)查看底层字节码,会发现没有生成遍历表行的指令,而是直接触发空结果的返回逻辑。

内容的提问来源于stack exchange,提问作者jason na

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 20:59:51