SQL 语句前面可以加上关键字 "EXPLAIN" 或短语 "EXPLAIN QUERY PLAN"。这两种修改都会使 SQL 语句的行为像查询一样,并返回有关 SQL 语句在省略 EXPLAIN 关键字或短语的情况下如何运行的信息。
EXPLAIN 和 EXPLAIN QUERY PLAN 的输出旨在用于交互式分析和故障排除。输出格式的详细信息可能会在 SQLite 的不同版本之间发生变化。应用程序不应使用 EXPLAIN 或 EXPLAIN QUERY PLAN,因为它们的确切行为是可变的,并且只有部分文档记录。
当 EXPLAIN 关键字单独出现时,它会导致语句的行为类似于查询,该查询返回它将在没有 EXPLAIN 关键字的情况下执行命令所使用的 虚拟机指令 序列。当 EXPLAIN QUERY PLAN 短语出现时,语句将返回有关将要使用的查询计划的高级信息。
EXPLAIN QUERY PLAN 命令在 此处 中进行了更详细的描述。
EXPLAIN 和 EXPLAIN QUERY PLAN 前缀会影响使用 sqlite3_step() 运行 准备好的语句 的行为。使用 sqlite3_prepare() 或类似方法生成新的准备好的语句的过程(大部分)不受 EXPLAIN 影响。(上述句子的例外情况是,在构建 EXPLAIN QUERY PLAN 准备好的语句时,EXPLAIN QUERY PLAN 使用的一些特殊操作码会被省略,作为性能优化。)
这意味着在 sqlite3_prepare() 期间发生的 действия 不受 EXPLAIN 影响。
一些 PRAGMA 语句在 sqlite3_prepare() 期间而不是在 sqlite3_step() 期间执行其工作。这些 PRAGMA 语句不受 EXPLAIN 影响。它们在有或没有 EXPLAIN 前缀的情况下都以相同的方式运行。不受 EXPLAIN 影响的 PRAGMA 语句集可能会在不同版本之间有所不同。一些 PRAGMA 语句在 sqlite3_prepare() 期间运行,具体取决于其参数。为了获得一致的结果,请避免对 PRAGMA 语句使用 EXPLAIN。
无论是否存在 EXPLAIN 或 EXPLAIN QUERY PLAN,都会调用 授权回调。
本页最后修改于 2022-01-08 05:02:57 UTC