我正在开发一个使用SQLite
来处理data aggregation
的项目。我有multiple SQLite database
个文件按时间分割。我打算使用SQLite ATTACH DATABASE
功能,因此我可以针对所有数据库运行单个查询。
每个数据库都具有相同的索引和相同的表名。我希望能够运行单个查询,它将从所有数据库和总和值以及类似的一些基本内容中提取记录。然后运行更新以标记那些已经处理的记录。
问题是:SQLite
是否会与执行这些查询并行?它会为每个数据库创建一个阅读器吗?是否知道根据查询和索引跳过某些数据库?
答案 0 :(得分: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 ...;
...
答案 1 :(得分:2)
我们使用sqlite的方式与完成相同的方式。我们找不到实现你想做的事情的方法。
在我们的案例中,数据是按时间排序的,因此我们只需查询所有数据库并将有序结果附加到列表中。
您可以创建一种代理,用于存储数据库列表并处理所有查询。不幸的是,每个单独的查询可能都必须手动加入,就像在SUM()
案例中一样。