Android小知識-資料庫優化
在資料量大的情況下,execSql省去了拼接sql語句的步驟,要比SqliteDatabase提供的insert、query、update、delete等函式效率高。
應用程式初始化時需要批量的向sqlite中插入大量資料,單獨的使用for+Insert方法導致應用響應緩慢, 因為 SQLite的資料庫本質上來講就是一個磁碟上的檔案,所以一切的資料庫操作其實都會轉化為對檔案的操作,而頻繁的檔案操作將會是一個很耗時的過程,會極大地影響資料庫存取的速度。
解決方法:新增事務處理
我們使用SQLite的事務進行控制:
db.beginTransaction();//手動設定開始事務 try { //批量處理操作 for (Collection c : colls) { insert(db, c); } db.setTransactionSuccessful(); //設定事務處理成功,不設定會自動回滾不提交。 //在setTransactionSuccessful和endTransaction之間不進行任何資料庫操作 } catch (Exception e) { MyLog.printStackTraceString(e); } finally { db.endTransaction(); //處理完成 }
這樣SQLite將把全部要執行的SQL語句先快取在記憶體當中,然後等到commit的時候一次性的寫入資料庫,這樣資料庫檔案只被開啟關閉了一次,效率自然大大的提高。

掃碼_搜尋聯合傳播樣式-標準色版.png
Android、Java、Python、Go、PHP、IOS、C++、HTML等等技術文章,更有各種書籍推薦和程式設計師資訊,快來加入我們吧!關注技術共享筆記。

838794-506ddad529df4cd4.webp.jpg
定期推送優質文章