• 21 Kasım 2024 15:20

Sait ORHAN

Öğretmek için Öğrenin- Öğrenmek için Öğretin

SQLite Insert Hızlandırma

Üzerinde çalıştığım Android uygulamasında yaşadığım bir sıkıntıyı ve çözümünü burada sizinle paylaşmak istedim.

Zararlı Bağlantılar isimli uygulamamızda siber dünyada tespit edilen zararlı linkleri ve kategorilerini paylaşıyoruz. Veriler sürekli güncellendiğinden internetten verileri alıp local veri tabanına kaydedilmesi gerekiyor. Aldığımız kayıt sayısı yirmi binleri aştığından standart SQLite insert komutu ve foreach döngüsü ile 10 dakikayı aşan bir süre alıyordu. İnternetten yaptığım araştırma sonucunda aşağıdaki kod ile insert işlemini yapınca yaklaşık 10 saniye kadar bir zaman aldı.

String sql = "INSERT INTO table (number, nick) VALUES (?, ?)";
db.beginTransaction();
 
SQLiteStatement stmt = db.compileStatement(sql);
for (int i = 0; i < values.size(); i++) {
    stmt.bindString(1, values.get(i).number);
    stmt.bindString(2, values.get(i).nick);
    stmt.execute();
    stmt.clearBindings();
}
 
db.setTransactionSuccessful();
db.endTransaction();[

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.