List<UserEo> userEoList = comDataComponent.getUserListByUid(); for (UserEo userEo : userEoList) { List<DataPermissionSchema> userDataPermissionSchema = getUserDataPermissionSchema(userEo.getUserUid(), userEo.getOrgCode()); //将当前用户的数据权限 存入redis key = SystemsConstant.DATA_PERMISSION_SCHEMA + UserUid redisTemplate.opsForValue().set(SystemsConstant.DATA_PERMISSION_SCHEMA + userEo.getUserUid(), ObjectUtil.toString(userDataPermissionSchema)); }userEoList数据量很大怎么优化代码
时间: 2023-08-03 15:05:45 浏览: 54
对于数据量很大的情况,可以考虑分批处理,即每次从数据库中取出一部分数据,处理完后再取下一批数据,直到所有数据都处理完成。这样可以减少一次性加载大量数据所带来的性能问题。
具体实现可以使用分页查询的方式,每次查询固定数量的数据,然后进行处理。示例代码如下:
```
int pageSize = 1000; // 每页查询的数据量
int pageNum = 1; // 当前页码
List<UserEo> userEoList = comDataComponent.getUserListByUid(pageNum, pageSize); // 分页查询数据
while (!userEoList.isEmpty()) {
for (UserEo userEo : userEoList) {
List<DataPermissionSchema> userDataPermissionSchema = getUserDataPermissionSchema(userEo.getUserUid(), userEo.getOrgCode()); //将当前用户的数据权限 存入redis key = SystemsConstant.DATA_PERMISSION_SCHEMA + UserUid
redisTemplate.opsForValue().set(SystemsConstant.DATA_PERMISSION_SCHEMA + userEo.getUserUid(), ObjectUtil.toString(userDataPermissionSchema));
}
pageNum++;
userEoList = comDataComponent.getUserListByUid(pageNum, pageSize); // 分页查询下一页数据
}
```
需要注意的是,分页查询需要根据实际情况设置合理的pageSize,避免一次查询数据量过大,导致性能问题。同时,为了保证数据的一致性,需要在分批处理完成后,再进行后续的操作。