SQLite + FMDB:DELETE需要太多时间

时间:2017-01-19 20:15:50

标签: objective-c cocoa sqlite fmdb

设置:Mac OS 10.12,SQLite 3.16 FMDB 2.6.2

我想用字段删除一些记录" 1-2-3"在X列中(该字段的格式包括破折号)。该记录存在于表中。

该表很大(> 1M记录),每个记录包含2个字段,每个字段都是在其他表中记录的引用(外键)。这意味着上述记录引用了其他2个表中的记录。

定义了Pragma:同步 =完整, locking_mode =独占, secure_delete =关闭。

所以相关代码如下:

[queue inTransaction:^(FMDatabase *db, BOOL *rollback) 
             {
BOOL res;
res=[db executeUpdate:@"DELETE FROM tbl WHERE X==?;",@"1-2-3"];
}]

挂起 sqlite3_step()函数 - 它被调用并在很长时间后返回。

删除多行时相同:

[queue inTransaction:^(FMDatabase *db, BOOL *rollback) 
             {
BOOL res;
res=[db executeUpdate:@"DELETE FROM tbl WHERE rowid IN (SELECT rowid FROM tbl WHERE X=some_value LIMIT 10);"];
}]

sqlite3_step()挂起并在很长时间后返回 - 几分钟。最后关闭了10行。

所有查询都在同一个线程上执行。

我想知道可能出现什么问题......

更新:INSERT操作成功。

0 个答案:

没有答案