4
Android 中 SQLite 性能优化 - 技术小黑屋 (droidyue.com)
IngramChen 積分 3

android...

一般來說 mobile app 會儲存的資料並不多,所以 SQLite 的效能很夠用了,大部份只要記得加上 index 都沒什麼太大的問題。至於文中說明的 transaction,即時關 cursor,用另外的 thread 處理 SQLite 等等項目,這本來就是基本要做的事,沒做的話算是 bug 吧…

雖然說 mobile 上儲存的資料通常不會太大,不過我也真的遇過資料太大,查詢變慢的情況 (加 index 也沒用了)。我們的案例是聊天室訊息的儲存,這個問題在上線的前一、兩年都沒問題。直到後來越來越多人覺得變慢了,而且還跟用戶有關 (有些人慢,有些人快),最後才查出是累積了長達一兩年的聊天訊息後,SQLite 終於撐不住了,尤其是特別多話的用戶。

最後怎麼解決?就將超大的訊息 table 拆成兩半,定期將太舊的訊息 archive 到另一個 table。將使用中的 table 維持在某個大小以內,以保證效能。