我正在处理从文件读取的31000个插入SQL语句,需要2分钟才能完成..需要一些提高性能的建议..
以下是代码:
while((line=reader.readLine())!=null){
dbs.execSQL(line);
k=(int)(i*0.0032);
if(k%10==0){fdb.publishProgress(k);}
i++;
}
答案 0 :(得分:1)
m processing 31000插入从文件中读取的SQL语句 需要2分钟以上才能完成..需要一些改进建议 性能..
如果您实际上没有使用它来从文件中读取,那么您所能做的就是使用BufferedReader
。
关于SQLite
,如果您正在处理成百上千的插入,更新或删除语句,transaction的使用将迅速提高速度性能,并且还有其他好处,如安全性,而且没有丢失数据库完整性的危险。
答案 1 :(得分:1)
使用此处提到的技术Is it possible to insert multiple rows at a time in an SQLite database?
进行批量插入请注意,您只能使用此技术在查询中一次插入500行。因此,在每个查询包含500条记录的查询中插入31000条记录。并且您可以在每次查询后发布进度,即每500次插入后发布进度。
答案 2 :(得分:0)
这个技巧会起作用吗;
dbs.beginTransaction();
while((line=reader.readLine())!=null){
dbs.execSQL(line);
k=(int)(i*0.0032);
if(k%10==0){fdb.publishProgress(k);}
i++;
}
dbs.setTransactionSuccessful();
dbs.endTransaction();