假如现在要向Android本地数据库中插入1万条数据。按照一般的想法代码如下:
//假设strings.size() = 10000
try {
for (String data : strings) {
ContentValues contentValues = new ContentValues();
if(!TextUtils.isEmpty(data)){
contentValues.put(key, data);
}
mDb.insert(table_name, null, contentValues);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
mDb.close();
}
如上做法可能会花费大概2minute,这是因为每次插入都会创建一次事务。在看看下面这段代码:
//假设strings.size() = 10000
try {
mDb.beginTransaction();
for (String data : strings) {
ContentValues contentValues = new ContentValues();
if(!TextUtils.isEmpty(data)){
contentValues.put(key, data);
}
mDb.insert(table_name, null, contentValues);
}
mDb.setTransactionSuccessful();
} catch (Exception e) {
e.printStackTrace();
} finally {
mDb.endTransaction();
mDb.close();
}
比第一段多了3行,但插入操作花费的时间只需要4s左右,这是因为我们主动开启了一个事务,所以整个插入操作实在一个事务中完成的,花费的时间也大大的减少了。
网友评论