对于 SQLite,给定一个 SQL 查询 Q,我试图弄清楚如何使用 C++ API 从 SQLite 的查询优化器中获取 Q 的估计查询执行成本。
我搜索了这个问题,在 SQLite 的网站上发现了很多关于这个成本的讨论,以及查询优化器如何在内部使用它。但是我找不到任何 C++ API 调用来获得这个成本。
因此,我猜可能没有实现这样的调用,但也许有人可能知道从 SQLite 中获取此成本的方法?
对于 SQLite,给定一个 SQL 查询 Q,我试图弄清楚如何使用 C++ API 从 SQLite 的查询优化器中获取 Q 的估计查询执行成本。
我搜索了这个问题,在 SQLite 的网站上发现了很多关于这个成本的讨论,以及查询优化器如何在内部使用它。但是我找不到任何 C++ API 调用来获得这个成本。
因此,我猜可能没有实现这样的调用,但也许有人可能知道从 SQLite 中获取此成本的方法?
文档说:
EXPLAIN QUERY PLAN 命令返回的数据仅用于交互式调试。SQLite 版本之间的输出格式可能会发生变化。应用程序不应依赖于 EXPLAIN QUERY PLAN 命令的输出格式。
任何属于 API 的部分都需要永久支持,因此查询优化器的细节不能成为 API 的一部分。
如果你真的想要这些值并且知道你在做什么,你可以修改 SQLite 源代码来返回它们。
sqlite3_stmt_status() 函数允许您检索语句的一些与性能相关的指标,但这些不是估计值,而是执行后的实际成本。