imetting/backend/sql/migrations/optimize_menu_loading_perfo...

25 lines
727 B
MySQL
Raw Normal View History

2026-03-26 06:55:12 +00:00
-- Migration: optimize menu loading performance
-- Created at: 2026-03-12
BEGIN;
-- 1) remove duplicate role-menu mapping rows to allow unique key
DELETE r1
FROM role_menu_permissions r1
JOIN role_menu_permissions r2
ON r1.role_id = r2.role_id
AND r1.menu_id = r2.menu_id
AND r1.id > r2.id;
-- 2) speed up role-menu lookup and prevent duplicate permission rows
ALTER TABLE `role_menu_permissions`
ADD UNIQUE KEY `uk_role_menu` (`role_id`, `menu_id`),
ADD KEY `idx_rmp_role` (`role_id`),
ADD KEY `idx_rmp_menu` (`menu_id`);
-- 3) speed up visible active menu ordering by parent/sort
ALTER TABLE `menus`
ADD KEY `idx_menus_visible_tree` (`is_active`, `is_visible`, `parent_id`, `sort_order`, `menu_id`);
COMMIT;