在我目前的Android項目中,我正在開發一個應用程序,用於記錄通信數據。每個數據包都存儲在我的SQLite數據庫中的一行中。我的一個測試錄音有3.888.530行。如何從SQLite中讀取4百行代碼並將其快速寫入文件?
應用程序應支持導出功能,以JSON格式將此數據寫入文本文件。目前我正在使用LIMIT函數,讀取5.000行的包並將它們寫入文件。這真的很慢。我認爲從數據庫讀取15.000行並將它們寫入文件需要超過60秒。
用於書寫我正在使用PrintStream。一個字符串被創建並且轉換爲一個字節數組被賦予流。
我讀我的數據包,這個查詢:
SELECT *
FROM data_packet
INNER JOIN data_packet_type
ON data_packet.data_packet_type_id = data_packet_type.id
WHERE recording_id = 7
ORDER BY time_received ASC
LIMIT 5000 OFFSET 0
的查詢與調用執行:
db.rawQuery(query, null);
後來,我通過與光標的運行數據和存儲數據。
我希望有一種方法可以更快地導出數據。 謝謝。
只讀了他們全部,而不是在大塊 – pskink
60秒?這是非常緩慢的,你一定是做錯了什麼。從數據庫中獲取15k條記錄最多需要幾百毫秒。可能小於100. –
使用Traceview來確定問題出在哪裏。你似乎認爲它來自查詢;我的猜測是它來自您的磁盤寫入I/O的JSON。 – CommonsWare