您的位置:首页 > 数据库

sqlite大量数据插入优化总结

2014-04-29 11:44 375 查看
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];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: