Подтвердить что ты не робот

Как повысить производительность базы данных SQLite для Android

Есть несколько вопросов, связанных с этой темой в stackoverflow, но я не получил правильного ответа. У меня есть некоторые сомнения в производительности плоских файлов, лучше ли использовать плоские файлы вместо SQLite?

Я получил статистику производительности для Android SQLite.

У меня есть статистика производительности для одной таблицы, у которой есть 21 столбец

Кто-нибудь может предложить, как уменьшить это время вставки.

Records  Write time in ms   Read time in ms
1000      67813                   608
1000      66340                   604
1000      64359                   609
10000     679837                  5159
10000     618062                  5110
10000     644638                  5729
10000     646878                  5890

Flat file имеют меньше времени, чем SQLite

Итак, кто-нибудь, пожалуйста, предложите мне, как я могу улучшить это время для SQLite.

Я использую простой database open insert using ContentValues и базу данных закрываю.

Пожалуйста, предложите мне некоторые вещи, как улучшить эту статистику.

Обновлена ​​статистика производительности после использования ниже answer.Still я хочу увеличить эту производительность.

Records    Writetime in ms         Readtime in ms   
1000        1645                       530          
1000        2497                       672          
1000        3143                       610          
10000       16356                     5243          
10000       14006                     5122          
10000       13158                     5002          
10000       14828                     5234          
100000      125525                    77622 

Спасибо

4b9b3361

Ответ 1

Я считаю, что вы вставляете 1000 или 10000 с помощью цикла. Используйте ОПЕРАЦИИ, это значительно сократит время записи. Я уже столкнулся с такой проблемой и сократил время записи в моем случае примерно с 30 секунд до менее чем 1 секунды.

Посмотрите это.

В основном, что вам нужно сделать:

db.beginTransaction();
try{
    for(int i = 0 ; i < LENGTH ; i++ ) {
        // execute SQL
    }
    db.setTransactionSuccessful(); // marks a commit
    }
finally{
    db.endTransaction();
}