sqlite大量数据插入优化总结
发布时间:2020-12-12 20:03:19 所属栏目:百科 来源:网络整理
导读:1.将插入操作放到一个Transaction里,默认的每条insert语句都会开启一个Transaction,参见:2.手动拼写插入语句,不要运用ORM,虽然代码会看起来很多,但是效率绝对大幅度提升未优化前代码: NSArray *organizations = [organizationsDic allValues]; for (Org
1.将插入操作放到一个Transaction里,默认的每条insert语句都会开启一个Transaction,参见: 2.手动拼写插入语句,不要运用ORM,虽然代码会看起来很多,但是效率绝对大幅度提升 未优化前代码: NSArray *organizations = [organizationsDic allValues]; for (Organization *organization in organizations) { [organization save]; } 优化后代码: //手动拼接sql语句,不采用OR模式,提升点性能,有待进入内网测试 FMDatabase *db = [MD_DataBaseTool getDb]; NSString *sql; //保存公司或部门 [db beginTransaction]; NSArray *organizations = [organizationsDic allValues]; for (Organization *organization in organizations) { sql = [NSString stringWithFormat:@"insert into Organization(organizationId,name,pId,memberNumber,type,sortNumber,groupId) values('%@','%@','%@')",organization.organizationId,organization.name,organization.pId,organization.memberNumber,organization.type,organization.sortNumber,organization.groupId]; [db executeUpdate:sql]; } //保存用户-部门映射表 for (UserOrganizationMap *userOrganizationMap in userOrganizations) { sql = [NSString stringWithFormat:@"insert into UserOrganizationMap(userOrganizationId,userId,organizationId,position,recentlyMap) values('%@',userOrganizationMap.userOrganizationId,userOrganizationMap.userId,userOrganizationMap.organizationId,userOrganizationMap.position,userOrganizationMap.recentlyMap]; [db executeUpdate:sql]; } [db commit]; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |