gpt4 book ai didi

c++ - SQLite查询进度条

转载 作者:行者123 更新时间:2023-11-30 01:18:15 28 4
gpt4 key购买 nike

我正在使用来自 C++ 的 sqlite,我想实现一个进度条,通知用户搜索的进度。

使用 sqlite3_progress_handler我可以将 ca 回调设置为每 N 条虚拟机指令调用一次。这对于通知用户应用程序仍在运行的无限进度条是可以的。

我需要的是从 0 -> 100% 的进度。这可以做到吗?

最佳答案

我意识到这有点晚了,这个问题已经有了公认的答案,但我认为多一点信息会有用。

正如 OP 在问题中指出的那样,sqlite3_progress_handler 可以配置为每 N VM 指令调用一次回调函数。这不是时间进度监视器或查询语句进度监视器,而是查询规划器为查询计算的 VM 指令的监视器(在紧要关头会执行)。

通过在查询前加上“EXPLAIN QUERY PLAN”(或简称为“EXPLAIN”)并对结果进行单步执行以获得计数,您将知道查询计划中有多少 VM 指令。这是您的 100% 数字。

请务必阅读 SQLite.org 网站上关于 EXPLAIN QUERY PLAN 命令的警告,尤其是关于不依赖输出格式的部分。但是对于这种情况,我们不关心结果中的信息,只关心指令的数量。


从 SQLite 版本 3.24.0 (2018-06-04) 开始,EXPLAIN QUERY PLAN 命令的输出格式与 EXPLAIN 命令有很大不同。 EXPLAIN QUERY PLAN 不再适合这个用例;您必须指定 EXPLAIN 命令本身。

需要明确的是,EXPLAIN 命令并未发布为支持 sqlite3_progress_handler() API。它能用在这种情况下纯属巧合。您应该始终测试它是否适用于您使用的任何 SQLite 版本。

关于c++ - SQLite查询进度条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22908421/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com