打开浏览器,粘贴一段SQL,就能看到SQLite的查询计划被翻译成中文——不用记命令行参数,也不用啃官方文档。这是Simon Willison在2026年7月18日发布的新工具SQLite Query Explainer要解决的问题,地址在tools.simonwillison.net/sqlite-query-explainer。

工具用Python、Pyodide和WebAssembly,把整个SQLite搬进浏览器运行。它没有改动SQLite本身,只是给EXPLAIN QUERY PLANEXPLAIN这两条老命令的输出,加了一层逐行注释。连作者本人都承认自己没把握验证这些解释是否准确——这句话决定了它的定位:适合学习,不适合给生产数据库下诊断书。

两层输出,两种问题

这个工具同时跑两条诊断命令,回答的是两个不同层面的问题。

命令输出内容能回答什么不能回答什么
EXPLAIN QUERY PLAN优化器选定的高层策略用了哪个索引、是否全表扫描实际耗时、实际磁盘IO次数
EXPLAIN虚拟机逐条字节码指令每一步具体执行什么操作真实运行时性能

这里有个容易误会的点:EXPLAIN看到的不是SQLite真的在硬盘和内存里做了什么,而是它打算怎么做。这是查询计划和字节码程序,不是性能采样。想知道真实耗时,得靠.timer on或者专门的性能分析工具,这个网页工具不做这件事。

工具本身没有新造轮子,新的只是那层人话注释。命令行敲EXPLAIN QUERY PLAN本来就能看到同样的原始输出,只是没人给你逐行解释。这个想法源自程序员Julia Evans前一天写的博客,她在文中感叹自己“也许有一天能学会读查询计划”。Willison看到后,让常用的AI编程工具Fable把这个念头做成了产品。

浏览器演示和生产数据库,差在哪

EXPLAIN的输出会随SQLite版本、编译选项、表的统计信息、数据量和索引配置变化。同一条查询换个环境,可能得到完全不同的执行计划。

浏览器里跑的Pyodide版SQLite,未必和生产环境用的SQLite同一个版本、同一套编译配置。Willison在发布文字里明确留了退路:他对SQLite查询计划的了解不足以验证这些结果,只说“看起来还算靠谱”。这句免责声明比工具本身更值得记住。

谁该用,谁该再等等

正在学SQLite内部机制的人,可以拿这个工具练手,弄清楚“扫描”“索引”“临时排序”这些术语具体对应哪一步操作,比对着命令行原始输出啃文档快。

排查线上慢查询的开发者,不建议照着浏览器里的解释直接改生产索引。稳妥做法是在真实数据库、真实数据量、和线上一致的SQLite版本上重新跑一遍EXPLAIN QUERY PLAN,拿那份结果说话。

接下来值得盯的,是有没有人拿真实查询案例去对照这个工具的解释和SQLite官方文档,看看逐行注释的准确率到底怎么样。目前这一点还看不清。