android 中SQLite数据库多条插入提高执行效率

最近在开发的过程中出现了对sqlite数据库进行多条插入操作,让人无法忍受的是插入200条及其简单的数据时,竟然花费了将近5秒钟,当我测试2000条时,直接挂掉了。

开始的源码如下
long starttime = System.currentTimeMillis();
System.out.println(starttime+"");

for (int i = 0; i< 2000;i++){
myDB.execSQL("insert into meetings (id , mainid) values ( '1','1')");
}
long endtime = System.currentTimeMillis();
System.out.println(endtime);
System.out.println((endtime-starttime)/1000);

后来上网查了下,主要是每次的execSQL操作都是对数据库的一次事务,估计有很多相关配套的操作重复执行。让人无法忍受的操作速度。

下面是优化的代码

long starttime = System.currentTimeMillis();
System.out.println(starttime+"");
myDB.beginTransaction();
for (int i = 0; i< 2000;i++){
myDB.execSQL("insert into meetings (id , mainid) values ( '1','1')");
}
myDB.setTransactionSuccessful();
myDB.endTransaction();
long endtime = System.currentTimeMillis();
System.out.println(endtime);
System.out.println((endtime-starttime)/1000);

在执行前开启事务,实行过后再关闭。这样的话,200条数据不到1秒钟,而2000条数据也就才3.7秒钟。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值