Android提高SQL处理速度

时间:2013-08-24 10:17:46

标签: android sqlite

我正在处理从文件读取的31000个插入SQL语句,需要2分钟才能完成..需要一些提高性能的建议..

以下是代码:

while((line=reader.readLine())!=null){

            dbs.execSQL(line);
            k=(int)(i*0.0032);
            if(k%10==0){fdb.publishProgress(k);}
            i++;
}

3 个答案:

答案 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();