rok*_*oid 5 sqlite android ormlite android-sqlite
我试图一次在android sqlite数据库中插入100000条记录.我正在使用以下两种不同的方法.
private void bulkInsertDataBySavePoint(final List<User> users) {
log.debug("bulkInsertDataBySavePoint()");
DatabaseConnection conn = null;
Savepoint savepoint = null;
try {
conn = userDao.startThreadConnection();
savepoint = conn.setSavePoint("bulk_insert");
for (User user : users) {
userDao.create(user);
}
} catch (SQLException e) {
log.error("Something went wrong in bulk Insert", e);
} finally {
if (conn != null) {
try {
conn.commit(savepoint);
userDao.endThreadConnection(conn);
} catch (SQLException e) {
log.error("Something went wrong in bulk Insert", e);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
和
private void bulkInsertDataByCallBatchTasks(final List<User> users) {
log.debug("bulkInsertDataByCallBatchTasks()");
try {
userDao.callBatchTasks(new Callable<Void>() {
@Override
public Void call() throws Exception {
for (User user : users) {
userDao.create(user);
}
return null;
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
两种方法都很好.平均而言,他们需要140秒才能占用60-65%的CPU,这是不行的.
我的想法是,我必须使用一个能提供json数据的api.我必须解析该json数据,然后插入sqlite数据库以供离线使用.
我正在寻找一种有效的方法来解决这个问题.
任何想法?
我试图一次在android sqlite数据库中插入100000条记录......平均而言,它们需要140秒才能占用60-65%的CPU,这在我看来并不合适.
不幸的是,我没有一个简单的答案.您可能必须使用原始SQL直接执行此类插入,以在有限的Android CPU上实现更快的性能.插入数据后,您可以转向ORMLite查询或更快地操作数据.