Sqlite的性能优化

比较安卓提供的API 执行insert,query,update,delete与execSql,rawQuery函数执行原生的插入,查询,更新,删除语句操作花费时间进行比较


数据量小的话,可能时间差不多,但是数量大到一定量的时候,会发现execsql 原生的SQL语句执行要更快.因为安卓提供的API 实际上会拼接成SQL语句在执行插入数据库.所有拼接的过程也需要时间.

大量数据插入时如何优化?

测试了下,直接通过for循环insert的话,插入较慢,分析了下Monitor 看见,不断对磁盘进行写入,而且是成高低谷形状.想了下,Web开发的时候可以通过事务插入.在安卓开发也可以.测了下

db.beginTransaction(); //手动设置开始事务

 try{

 //批量处理操作 

for(Collection c:colls){ insert(db, c); 

} db.setTransactionSuccessful(); //设置事务处理成功,不设置会自动回滚不提交。 

//在setTransactionSuccessful和endTransaction之间不进行任何数据库操作 

}catch(Exception e){ MyLog.printStackTraceString(e);

 }finally{


 db.endTransaction(); //处理完成

 }



发现就读写了一次文件,而且写入速度也比之前提升了不少.~~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容