2013-08-24 2 views
0

Я обработки 31000 заявления Вставьте SQL чтение из файла и занимает более 2 минут, чтобы закончить .. нужен совет в повышении производительности ..Android повысить скорость обработки SQL

Вот код:

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

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

Является ли это «первым запуском» или что-то повторяющееся? –

+0

Первый запуск внутри SQLiteOpenHelper - onCreate (SQLiteDatabase db) – Alfa

+1

Тогда почему бы не распространять файл базы данных sqlite, предварительно заполненный? –

ответ

1

обработка м 31000 заявления Вставьте SQL чтение из файла и его занимает более 2 минут, чтобы закончить .. нужен совет по улучшению производительности ..

Все, что вы можете сделать, это использовать BufferedReader, если вы фактически не используете его для чтения из файла.

И что касается SQLite, если вы обрабатываете сотни и тысячи заявлений о вставке, обновлении или удалении, то использование transaction будет быстро увеличивать скорость работы, а также имеет другие преимущества, такие как безопасность, и нет никакой опасности потерять целостность базы данных.

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(); 
+0

Вы забыли 'try' /', наконец, '. –

1

ли пакетная вставка с использованием техники, упомянутой здесь Is it possible to insert multiple rows at a time in an SQLite database?

Пожалуйста, обратите внимание, что вы можете вставить 500 строк в то время, в запросе, используя эту технику. Поэтому вставьте 31000 записей в запросах, содержащих 500 записей для каждого запроса. И вы можете публиковать прогресс после каждого запроса, т. Е. После каждых 500 вставок.

Смежные вопросы