目前我的android sqlite数据库中有一个包含大约500k记录的表。在我的笔记本电脑上删除大约需要11秒钟,但在我的智能手机上删除需要花费很长时间。
我试图放下桌子,但它只是挂在那里。有什么策略可以解决这个问题吗?我已经坚持这个问题几个小时了! :(
new Thread(new Runnable() {
@Override
public void run() {
StockDocRepo repo = new StockDocRepo(this);
repo.deleteInactiveRecords();
}
}).start();
deleteInactiveRecords()
方法只是纯SQL原始查询:
DELETE FROM stockloc WHERE active = "0"
编辑:经过几个小时的发现我发现我的Android智能手机中的数据库无法通过PRAGMA INTEGRITY_CHECK导致系统抛出“数据库磁盘映像格式错误”异常,我试图丢失时未能捕获表格。
我采取的最终解决方案是将原始表重命名为“stockloc_temp”,然后重新创建“stockloc”表并插入我要保留到新表中的所有记录。然后旧桌子掉了下来。瞧它完成了!