mirror of
				https://github.com/dromara/RuoYi-Vue-Plus.git
				synced 2025-11-04 16:23:42 +08:00 
			
		
		
		
	update 使用 in 优化 or 提升索引命中率
This commit is contained in:
		@@ -44,11 +44,14 @@ public class SysDataScopeServiceImpl implements ISysDataScopeService {
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public String getDeptAndChild(Long deptId) {
 | 
			
		||||
        List<SysDept> deptList = deptMapper.selectList(new LambdaQueryWrapper<SysDept>()
 | 
			
		||||
            .select(SysDept::getDeptId)
 | 
			
		||||
            .apply(DataBaseHelper.findInSet(deptId, "ancestors")));
 | 
			
		||||
        List<Long> ids = deptList.stream().map(SysDept::getDeptId).collect(Collectors.toList());
 | 
			
		||||
        ids.add(deptId);
 | 
			
		||||
        List<SysDept> list = deptMapper.selectList(new LambdaQueryWrapper<SysDept>()
 | 
			
		||||
            .select(SysDept::getDeptId)
 | 
			
		||||
            .eq(SysDept::getDeptId, deptId)
 | 
			
		||||
            .or()
 | 
			
		||||
            .apply(DataBaseHelper.findInSet(deptId, "ancestors")));
 | 
			
		||||
            .in(SysDept::getDeptId, ids));
 | 
			
		||||
        if (CollUtil.isNotEmpty(list)) {
 | 
			
		||||
            return list.stream().map(d -> Convert.toStr(d.getDeptId())).collect(Collectors.joining(","));
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -82,9 +82,9 @@ public class SysUserServiceImpl implements ISysUserService {
 | 
			
		||||
                List<SysDept> deptList = deptMapper.selectList(new LambdaQueryWrapper<SysDept>()
 | 
			
		||||
                    .select(SysDept::getDeptId)
 | 
			
		||||
                    .apply(DataBaseHelper.findInSet(user.getDeptId(), "ancestors")));
 | 
			
		||||
                w.eq("u.dept_id", user.getDeptId())
 | 
			
		||||
                    .or()
 | 
			
		||||
                    .in("u.dept_id", deptList.stream().map(SysDept::getDeptId).collect(Collectors.toList()));
 | 
			
		||||
                List<Long> ids = deptList.stream().map(SysDept::getDeptId).collect(Collectors.toList());
 | 
			
		||||
                ids.add(user.getDeptId());
 | 
			
		||||
                w.in("u.dept_id", ids);
 | 
			
		||||
            });
 | 
			
		||||
        return wrapper;
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user