技术与生活 / 一篇记录
查询计划是一张路线图,不是秒表
SQLite 查询计划能展示扫描和索引访问,适合作为优化前后的对照。
计划描述数据库准备如何访问记录,例如扫描整表还是使用索引。它能帮助发现明显不合理的路径,但真正耗时还取决于数据规模、缓存与存储状态。
从一个例子看起
查询示例以 SQLite 为例;notes 为测试表,包含 id、title、score、category、created_at 字段。
EXPLAIN QUERY PLAN SELECT title FROM notes WHERE category = 'web';
比较建索引前后的计划,再测实际执行时间。
排查时再往前走一步
同一查询在冷缓存和热缓存下可能差异很大。优化时保存原查询、测试数据规模和计划,再改变一个因素,以免把环境变化当成优化效果。
执行计划显示使用索引后,也要核对实际返回行数。条件写错导致取回过多结果,再高效的访问路径也无法解决业务查询范围错误,正确性应先于性能判断。
计划文字会随数据库版本变化,不适合写死为通用性能结论。
参考:SQL 文档。