我有一个与我的应用程序sqlite表...但将需要尽快添加/删除大量数据集。我有很多选择。现在,我有大约35,000行,我可以在大约15秒内更新。我更喜欢更快的东西。本质上只需要一列作为我的辅助文本。将大量数据导入到android上的sqlite数据库 - 时间太长。需要替代品
现在,用户下载一个txt文件,然后该文件被传递给下面的方法。
public boolean installLanguageFile(String resourceId) {
SQLiteDatabase db;
db = new DataBaseHelper(getContext()).getWritableDatabase();
try {
File mFile = new File(getActivity().getFilesDir() + resourceId);
InputStream insertsStream = new FileInputStream(mFile);
BufferedReader insertReader = new BufferedReader(new InputStreamReader(insertsStream));
long lengthOfFile = 34504;
long total = 0;
int rowId = 1;
String sql = "UPDATE Story_Data SET text2 = ('?') WHERE _id = ?";
db.beginTransaction();
SQLiteStatement stmt = db.compileStatement(sql);
while (insertReader.ready()) {
total += rowId;
stmt.bindString(1, insertReader.readLine());
stmt.execute();
stmt.clearBindings();
publishProgress("" + (rowId * 100/lengthOfFile));
rowId++;
}
db.setTransactionSuccessful();
db.endTransaction();
insertReader.close();
//mCallback.reloadView();
return true;
} catch (IOException e) {
e.printStackTrace();
return false;
}
}
是否存在本地更改,或者是否是来自服务器的所有数据?如果它全部来自服务器,最快的方法就是下载一个新的数据库文件。 –
如果由于其他表具有用户输入而无法执行此操作,但此表来自服务器 - 删除此表并重新创建它,所有插入操作可能会比更新每一行更快。但是这需要您进行基准测试和复查。 –
如果您不在每次迭代中发布进度,您是否尝试过快多快?对于初学者尝试完全删除它 –