在SQLite中删除500k行数据的策略

时间:2016-01-14 06:59:24

标签: android sqlite

目前我的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”表并插入我要保留到新表中的所有记录。然后旧桌子掉了下来。瞧它完成了!

0 个答案:

没有答案