// 创建FMDatabaseQueue
FMDatabaseQueue * queue = [FMDatabaseQueue databaseQueueWithPath:@"数据库路径"];
dispatch_queue_t g_queue = dispatch_queue_create("com.setNewsFavriteData", DISPATCH_QUEUE_SERIAL);//这里用串行队列,并行队列会创建多个线程,抢占cpu资源,造成卡顿
//添加数据
NSUInteger dataCount = favriteDataArray.count;
[db setShouldCacheStatements:YES];//打开存储过程-----SQLite插入数据效率最快的方式就是:事务+关闭写同步+执行准备(存储过程),如果对数据库安全性有要求的话,就开启写同步。
for (int i = 0; i < dataCount/50 + 1; i++)
{
@autoreleasepool {
for (int j = 0; j < 50 && i*50+j < dataCount; j++)
{
dispatch_async(g_queue, ^{
//事务操作
[queue inTransaction:^(FMDatabase *db, BOOL *rollback) {
sqlstr = [NSString stringWithFormat:@"INSERT INTO XXXX"];
[db executeUpdate:sqlstr];
}];
});
}
}
}
参考 :
sqlite 操作速度优化浅谈
iOS 提升SQLite数据插入效率低、速度慢的方法
网友评论