1

我正在研究一个SQLite用于处理的项目data aggregation。我有按时间拆分的multiple SQLite database文件。我计划使用该功能,以便可以对所有数据库运行单个查询。SQLite ATTACH DATABASE

每个数据库都有相同的索引和相同的表名。我希望能够运行单个查询,该查询将从所有数据库中提取记录并求和值以及一些类似的基本内容。然后运行更新以将这些记录标记为已处理。

问题是:会SQLite并行执行这些查询吗?它会为每个数据库创建一个阅读器吗?它会知道根据查询和那里的索引跳过一些数据库吗?

4

2 回答 2

2

SQLite 不能并行工作。

此外,如果您有多个同名表,SQLite 不会自动访问所有这些表;您必须分别从每个表中获取数据并手动组合它们;像这样的东西:

SELECT (SELECT SUM(x) FROM FirstDB.SomeTable   WHERE ...) +
       (SELECT SUM(x) FROM Second DB.SomeTable WHERE ...) +
       ...;
UPDATE FirstDB.SomeTable  SET Processed = 1 WHERE ...;
UPDATE SecondDB.SomeTable SET Processed = 1 WHERE ...;
...
于 2013-06-24T08:38:45.560 回答
2

我们使用 sqlite 的方式与您将要使用的方式完全相同。我们没有找到实现您想要完成的目标的方法。

在我们的案例中,数据是按时间排序的,所以我们只需查询所有数据库并将排序的结果附加到一个列表中。

您可以创建一种代理来存储数据库列表并处理您的所有查询。不幸的是,每个单独的查询可能必须手动加入,就像你的SUM()情况一样。

于 2013-06-24T08:52:08.833 回答