2016-08-11 4 views
0

Могу ли я иметь Вставить запрос быстрее, чем сильфона код:Android улучшает производительность SQLite?

public void InsertFast2(List<Marketing_Points_B> values) { 

    String sql = "INSERT INTO " + tableName2 + " (Count, Date, Time, Lat, Lng, UserCode, LatLng) VALUES (?, ?, ?, ?, ?, ?, ?)"; 

    SQLiteDatabase db = this.getWritableDatabase(); 
    /*?*/db.execSQL("PRAGMA synchronous=OFF"); 
    db.beginTransactionNonExclusive(); 

    SQLiteStatement stmt = db.compileStatement(sql); 

    for (int i = 0; i < values.size(); i++) { 
     stmt.bindString(1, values.get(i).getCounts()); 
     stmt.bindString(2, values.get(i).getDate()); 
     stmt.bindString(3, values.get(i).getTime()); 
     stmt.bindString(4, String.valueOf(values.get(i).getLat())); 
     stmt.bindString(5, String.valueOf(values.get(i).getLng())); 
     stmt.bindString(6, values.get(i).getUserCode()); 
     stmt.bindString(7, String.valueOf(values.get(i).getmPosition())); 
     stmt.execute(); 
     stmt.clearBindings(); 
    } 

    db.setTransactionSuccessful(); 
    db.endTransaction(); 
    /*?*/db.execSQL("PRAGMA synchronous=NORMAL"); 
    db.close(); 
} 

И что (Могу ли я использовать из них)?

db.execSQL("PRAGMA synchronous=OFF"); 

db.execSQL("PRAGMA synchronous=NORMAL"); 

ответ

2

Вы не можете идти быстрее, за исключением перевозки полной базы данных, так что вам не придется делать никаких вставок вообще.

Операции PRAGMA задокументированы в documentation. Установка synchronous ускоряет скорость.

+0

Спасибо, много. –

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