继吉 发表于 2016-12-1 11:17:34

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秒钟。
页: [1]
查看完整版本: android 中SQLite数据库多条插入如何提高效率