Android. Быстро засунуть в SQLite базу много данных. Batch-insert, типа.

Android. Быстро засунуть в SQLite базу много данных. Batch-insert, типа.

Собственно столкнулся с надобностью загрузить в SQLite много данных по-умолчанию, то есть, при первом старте программы. Если это делать обычной функцией insert обычно - то получим огромное время. И если на небольших объемах данных это некритично, то на больших - прямо беда. Решение есть.

Надо соблюсти два момента.

1. всю операцию поместить в транзакцию. Если транзакции нет, то на каждый insert будет создана отдельная транзакция. Это жрет время.

 

try{
 db.beginTransaction();
 // тут делаем много инсертов
 
 db.setTransactionSuccessful();
} catch (Exception e){
 // catch exception
} finally {
 db.endTransaction();
}

 

 2. Чуть быстрее обычного инсерта работает InsertHelper

InsertHelper ih = new InsertHelper(db, "tableName");
final int cname = ih.getColumnIndex("name");
ih.prepareForInsert();
ih.bind(cname, strLine);
ih.execute();

 

Сочетание этих двух штук на моем примере ускорило импорт данных в десятки раз.

Вот так!

Комментарии (1)

mem: 1146 total: 20 module: 12 xsl: 6