← 全部文章

技术与生活 / 一篇记录

查询计划是一张路线图,不是秒表

SQLite 查询计划能展示扫描和索引访问,适合作为优化前后的对照。

计划描述数据库准备如何访问记录,例如扫描整表还是使用索引。它能帮助发现明显不合理的路径,但真正耗时还取决于数据规模、缓存与存储状态。

从一个例子看起

查询示例以 SQLite 为例;notes 为测试表,包含 id、title、score、category、created_at 字段。

EXPLAIN QUERY PLAN SELECT title FROM notes WHERE category = 'web';

比较建索引前后的计划,再测实际执行时间。

排查时再往前走一步

同一查询在冷缓存和热缓存下可能差异很大。优化时保存原查询、测试数据规模和计划,再改变一个因素,以免把环境变化当成优化效果。

执行计划显示使用索引后,也要核对实际返回行数。条件写错导致取回过多结果,再高效的访问路径也无法解决业务查询范围错误,正确性应先于性能判断。

计划文字会随数据库版本变化,不适合写死为通用性能结论。

参考:SQL 文档。

搜索文章

输入关键词,找回一篇记录。