如何使用FMDatabase实现SQLite数据库的增量抽真空?
纯sqlite中的等价物是在一个批量大小的循环中准备语句" PRAGMA incremental_vacuum",sqlite_step,并最终确定语句。然后重复,直到所有页面都被抽真空。
这如何与FMDatabase一起使用?
答案 0 :(得分:2)
我找到的解决方案是在循环中执行此语句,直到batchAmount为0:
[database executeStatements:[NSString stringWithFormat:"PRAGMA incremental_vacuum(%d);", batchAmount]];
不起作用的方法:
"PRAGMA incremental_vacuum(:BatchAmount)"
与参数字典条目一起使用" BatchAmount"导致SQLite语法错误。executeUpdate:
导致FMDatabase错误,因为" PRAGMA"意味着它是一个查询。executeQuery:
对文件大小没有影响。