Small. Fast. Reliable.
Choose any three.
解释

1.语法

sql-stmt:

EXPLAIN QUERY PLAN alter-table-stmt analyze-stmt attach-stmt begin-stmt commit-stmt create-index-stmt create-table-stmt create-trigger-stmt create-view-stmt create-virtual-table-stmt delete-stmt delete-stmt-limited detach-stmt drop-index-stmt drop-table-stmt drop-trigger-stmt drop-view-stmt insert-stmt pragma-stmt reindex-stmt release-stmt rollback-stmt savepoint-stmt select-stmt update-stmt update-stmt-limited vacuum-stmt

2.说明

SQL语句之前可以带有关键字“ EXPLAIN”或短语“ EXPLAIN QUERY PLAN”。任何一种修改都会导致SQL语句充当查询,并返回有关如果省略EXPLAIN关键字或词组该SQL语句将如何操作的信息。

EXPLAIN和EXPLAIN QUERY PLAN的输出仅用于交互式分析和故障排除。输出格式的详细信息可能会从一个版本的SQLite更改为下一个版本。应用程序不应使用EXPLAIN或EXPLAIN QUERY PLAN,因为它们的确切行为是可变的,并且仅部分记录在案。

当EXPLAIN关键字本身出现时,它将使该语句充当查询的角色,返回不存在EXPLAIN关键字时用于执行命令的虚拟机指令序列 。当出现EXPLAIN QUERY PLAN短语时,该语句返回有关将要使用的查询计划的高级信息。

EXPLAIN QUERY PLAN命令在此处进行 了详细描述

2.1。EXPLAIN在运行时运行,而不是在准备时运行

EXPLAIN和EXPLAIN QUERY PLAN前缀会影响使用sqlite3_step()运行准备好的语句的行为。使用sqlite3_prepare()或类似方法生成新的预处理语句的过程(大部分)不受EXPLAIN的影响。(前一句话的例外是,在构建EXPLAIN QUERY PLAN预准备语句时,EXPLAIN QUERY PLAN使用的一些特殊操作码会被忽略,以进行性能优化。)

这意味着在sqlite3_prepare()期间发生的动作不受EXPLAIN的影响。