sqlite效能的優化,在此記錄。(乙個比較全面的sqlite資料庫講解)具體用法看上面的部落格。
優點:加快了查操作
缺點:降低了增刪改操作的速度,增加了空間消耗,建立索引過程耗時。
基於以上特點,具體情況判斷是否建立索引。
sqlite想要執行操作,需要將程式中的sql語句編譯成對應的sqlitestatement,比如select * from record這一句,被執行100次就需要編譯100次。對於批量處理插入或者更新的操作,我們可以使用顯式編譯來做到重用sqlitestatement。
private
void insertwithprecompiledstatement(sqlitedatabase db)
}
在android中,無論是使用sqlitedatabase的insert,delete等方法還是execsql都開啟了事務,來確保每一次操作都具有原子性,使得結果要麼是操作之後的正確結果,要麼是操作之前的結果。
然而事務的實現是依賴於名為rollback journal檔案,借助這個臨時檔案來完成原子操作和回滾功能。既然屬於檔案,就符合unix的檔案范型(open-read/write-close),因而對於批量的修改操作會出現反覆開啟檔案讀寫再關閉的操作。然而好在,我們可以顯式使用事務,將批量的資料庫更新帶來的journal檔案開啟關閉降低到1次。、
private
void
insertwithtransaction(sqlitedatabase db)
db.settransactionsuccessful();
} catch (exception e) finally
}
查詢優化的幾點小細節:
1.按需獲取資料
2.提前獲取列索引
private
void
goodquerywithloop(sqlitedatabase db) , null, null, null, null, null) ;
int inserttimecolumnindex = cursor.getcolumnindex(tabledefine.column_insert_time);//先獲得索引
while (cursor.movetonext())
cursor.close();
}
3.contentvalues的容量調整
contentvalues的初始容量是8,如果當新增的資料超過8之前,則會進行雙倍擴容操作,因此建議對contentvalues填入的內容進行估量,設定合理的初始化容量,減少不必要的內部擴容操作。
Android中SQLite操作示例
android中sqlite操作示例 在android中對sqlite資料庫的操作,涉及以下幾個方面 1 確認資料庫檔案,即.db檔案 2 通過android.database.sqlite.sqlitedatabase類的openorcreatedatabase 方法開啟資料庫 3 資料庫操作 a...
Android中SQLite版本公升級
size large android中sqlite版本公升級 網上有很多文章,但是感覺寫的都不是很明白 前提 定義dbopenhelper類繼承sqliteopenhelper 重寫oncreate和onupgrade方法 ondowngrade是降級的方法,應該不會用到 定義兩個屬性 資料庫名稱,...
Android中對SQLite的操作
1.總論 通常自定義類,並繼承自sqliteopenhelper,在預設的建構函式中,會呼叫父類的建構函式。只需將資料庫名傳入即可。super context,database name,null,database version 2.建立表 首先,獲取乙個可寫的資料庫物件 database thi...