加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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];

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读