代码之家  ›  专栏  ›  技术社区  ›  danatel

来自api的sqlite解释

  •  0
  • danatel  · 技术社区  · 15 年前

    我的应用程序执行了一个复杂的sql查询。对于3.6.11版本(64ms),查询运行良好。在3.6.22中运行时,需要100秒以上才能完成。从命令行客户机执行时,在11和22中执行都很快。因此,我想从我的应用程序内部运行带有“explain”的查询。有可能吗?我尝试准备并单步执行查询,然后将列作为文本读取,但结果为空。

    可以使用C++ API从我的应用程序中“解释”吗?

    1 回复  |  直到 14 年前
        1
  •  0
  •   Doug Currie    15 年前

    根据 SQLite opcode page :

    根据编译时选项的不同,您可以将sqlite虚拟机设置为一种模式,通过将消息写入标准输出来跟踪其执行。非标准sql“pragma”注释可用于打开和关闭跟踪。要打开跟踪,请输入:

    PRAGMA vdbe_trace=on;
    

    通过输入类似的语句,但将值“on”更改为“off”,可以关闭跟踪。

    同时,来自 EXPLAIN ... 查询只是一个(有序的)记录集,如果你能做到这一点,你就可以解码它。见: this SQLite page