Android_SQLite_效能最佳化技巧

來源:互聯網
上載者:User
  • 相對於封裝過的ContentProvider而言,使用原始SQL語句執行效率高,比如使用方法rawQuery、execSQL的執行效率比較高
  • 對於需要一次性修改多條資料時,可以考慮使用SQLite的事務方式批量處理,我們定義SQLiteDatabase db對象,執行的順序為

db.beginTransaction();

//這裡處理資料添加,刪除或修改的SQL語句

db.setTransactionSuccessful(); //這裡設定處理成功

db.endTransaction(); //這句很重要,告訴資料庫處理完成了,這時SQLite的底層會執行具體的資料操作

  • 打好SQL語句的基礎,對於查詢,以及分配表的結構都十分重要,一些傳統資料庫最佳化技巧同樣實用,如建立索引,加入冗餘欄位,分頁查詢等等
  • 在進行cursor操作時,千萬別忘記執行cursor.close()方法
  • 避免子查詢。在某些情況下,SQLite 資料庫引擎會將子查詢結果儲存在臨時檔案中,這會延長處理時間

以上1,3,4,5點都很好理解,但是第2點,事務為什麼能提高效能呢?

當我們在未開啟事務的情況下執行一條(僅一次插入)插入語句時,資料庫會預設為該語句添加事務,在語句結束後,會進行一次自動地Commit操作把資料重新整理到磁碟資料檔案中。

如果有多條插入語句,那麼,在為開啟事務的情況下,資料庫會為每一個插入語句都進行一次自動的Commit操作。

因為Commit操作會把資料重新整理到磁碟資料檔案中,而寫入磁碟資料檔案的操作就非常耗時間了,因為要驗證,更新索引等。

所以如果使用交易處理多條語句,僅僅需要Commit一次,大大節省了時間,提高了效能。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.