1.语法
sql-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的影响。
某些PRAGMA语句在sqlite3_prepare()期间而不是在sqlite3_step()期间执行工作。那些PRAGMA语句不受EXPLAIN的影响。无论使用或不使用EXPLAIN前缀,它们的操作相同。不受EXPLAIN影响的PRAGMA语句集在一个版本与下一个版本之间可能有所不同。某些PRAGMA语句根据其参数在sqlite3_prepare()期间运行。为了获得一致的结果,请避免在PRAGMA语句上使用EXPLAIN。
该授权回调调用不管EXPLAIN或解释查询计划的存在下进行。