
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)