2013-06-24 37 views
1

我正在使用SQLite來處理data aggregation的項目。我有multiple SQLite database檔案分裂時間。我打算使用SQLite ATTACH DATABASE功能,因此我可以針對所有數據庫運行單個查詢。SQLite3附加數據庫性能

每個數據庫都有相同的索引和相同的表名。我希望能夠運行單個查詢,這將拉動所有數據庫記錄和總和值和一些基本的東西。然後運行更新標誌這些記錄已處理。

問題是:將SQLite並行執行這些查詢?它會爲每個數據庫創建一個閱讀器嗎?是否知道基於查詢和索引跳過一些數據庫?

謝謝您提前。

回答

2

SQLite不能並行工作。另外,如果你有多個同名的表,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 ...; 
... 
+0

所以這聽起來像代理想法可能是最好的。將查詢調用同時發送到不同的數據庫,然後執行某種合併排序。 – WojonsTech

1

我們用完全相同的方式,你會去做它的sqlite。我們沒有找到實現你想做的事情的方法。

在我們的案例中,數據是按照時間排序的,因此我們只是查詢所有數據庫並將排序後的結果附加到列表中。

您可以創建一種代理來存儲數據庫列表並處理所有查詢。不幸的是,每個單獨的查詢都可能需要手動加入,就像在您的SUM()案例中一樣。

+0

這很有趣,他們還沒有將這個特性添加到庫綁定中,這可能會讓sqlite成爲一支力量, – WojonsTech