我正在处理从文件读取的31000个Insert SQL语句,并且需要超过2分钟才能完成。在提高性能方面需要一些建议。
代码如下:
while((line=reader.readLine())!=null){
dbs.execSQL(line);
k=(int)(i*0.0032);
if(k%10==0){fdb.publishProgress(k);}
i++;
}发布于 2013-08-24 18:24:05
m正在处理31000条Insert SQL语句,正在从文件中读取数据,完成此操作需要2分钟以上。在提高性能方面需要一些建议。
如果您实际上没有使用BufferedReader来读取文件,那么您所能做的就是使用它。
关于SQLite,如果您正在处理成百上千的insert、update或delete语句,使用transaction将迅速提高速度性能,而且它还具有其他好处,如安全性,并且没有丢失数据库完整性的危险。
发布于 2013-08-24 18:32:09
使用这里提到的Is it possible to insert multiple rows at a time in an SQLite database?技术进行批量插入
请注意,使用此技术一次只能在查询中插入500行。因此,在每个查询包含31000条记录的查询中插入500条记录。你可以在每次查询后发布进度,也就是每500次插入之后。
发布于 2013-08-24 18:26:38
DO此技巧将会起作用;
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();https://stackoverflow.com/questions/18417456
复制相似问题