From a4fe077a231ed2ae0094af0fc6fa0735b764c862 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子Li <15040126243@163.com> Date: 星期五, 28 六月 2024 12:49:58 +0800 Subject: [PATCH] update 优化 大数据量下join卡顿问题 使用子查询提高性能 --- ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml | 33 +++++++++------------------------ 1 files changed, 9 insertions(+), 24 deletions(-) diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml index fad1812..a9d4886 100644 --- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml +++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml @@ -11,9 +11,8 @@ select distinct m.menu_id, m.parent_id, m.menu_name, m.path, m.component, m.query_param, m.visible, m.status, m.perms, m.is_frame, m.is_cache, m.menu_type, m.icon, m.order_num, m.create_time from sys_menu m - left join sys_role_menu rm on m.menu_id = rm.menu_id - left join sys_user_role sur on rm.role_id = sur.role_id - left join sys_role ro on sur.role_id = ro.role_id + left join sys_role_menu rm on m.menu_id = rm.menu_id + left join sys_role r on sur.role_id = r.role_id ${ew.getCustomSqlSegment} </select> @@ -34,14 +33,10 @@ m.order_num, m.create_time from sys_menu m - left join sys_role_menu rm on m.menu_id = rm.menu_id - left join sys_user_role sur on rm.role_id = sur.role_id - left join sys_role ro on sur.role_id = ro.role_id - left join sys_user u on sur.user_id = u.user_id - where u.user_id = #{userId} - and m.menu_type in ('M', 'C') - and m.status = '0' - and ro.status = '0' + left join sys_role_menu rm on m.menu_id = rm.menu_id and m.status = '0' + left join sys_role r on rm.role_id = r.role_id and r.status = '0' + where m.menu_type in ('M', 'C') + and r.role_id in (select role_id from sys_user_role where user_id = #{userId}) order by m.parent_id, m.order_num </select> @@ -57,22 +52,12 @@ order by m.parent_id, m.order_num </select> - <select id="selectMenuPerms" resultType="String"> - select distinct m.perms - from sys_menu m - left join sys_role_menu rm on m.menu_id = rm.menu_id - left join sys_user_role sur on rm.role_id = sur.role_id - </select> - <select id="selectMenuPermsByUserId" parameterType="Long" resultType="String"> select distinct m.perms from sys_menu m - left join sys_role_menu rm on m.menu_id = rm.menu_id - left join sys_user_role sur on rm.role_id = sur.role_id - left join sys_role r on r.role_id = sur.role_id - where m.status = '0' - and r.status = '0' - and sur.user_id = #{userId} + left join sys_role_menu rm on m.menu_id = rm.menu_id and m.status = '0' + left join sys_role r on r.role_id = rm.role_id and r.status = '0' + where r.role_id in (select role_id from sys_user_role where user_id = #{userId}) </select> <select id="selectMenuPermsByRoleId" parameterType="Long" resultType="String"> -- Gitblit v1.9.3