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的时候一次性的写入数据库,这样数据库文件只被打开关闭了一次,效率自然大大的提高。

©️2020 CSDN 皮肤主题: 猿与汪的秘密 设计师:上身试试 返回首页