SQLite3附加数据库性能

时间:2013-06-24 01:30:44

标签: sqlite

我正在开发一个使用SQLite来处理data aggregation的项目。我有multiple SQLite database个文件按时间分割。我打算使用SQLite ATTACH DATABASE功能,因此我可以针对所有数据库运行单个查询。

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

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

2 个答案:

答案 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()案例中一样。

相关问题