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秒钟。

你可能感兴趣的:(android 中SQLite数据库插入多条数据提高效率)