2016-08-11 52 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

非常感谢。 –