Android小知识-数据库优化

作者: 爱读书的顾先生 | 来源:发表于2018-10-03 16:53 被阅读8次

在数据量大的情况下,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

定期推送优质文章

相关文章

网友评论

    本文标题:Android小知识-数据库优化

    本文链接:https://www.haomeiwen.com/subject/mbazoftx.html