Files
leaudit-platform-backend/scripts/创建sql/sso_users_org_tree_indexes.sql
T
2026-05-12 16:53:22 +08:00

37 lines
1.7 KiB
PL/PgSQL

-- ============================================================================
-- sso_users 组织树查询索引补丁
-- 用途:
-- 1. 优化 /api/admin/users/organizations/tree 的分层懒加载查询
-- 2. 重点覆盖 tenant / dep / org / ou_id 四类过滤路径
-- 注意:
-- 1. 该脚本适合已存在 sso_users 表的环境增量执行
-- 2. 如果正式库较大,建议低峰执行;如需 CREATE INDEX CONCURRENTLY,请拆成单条执行
-- ============================================================================
BEGIN;
-- 根节点:按地区 + 有效用户状态枚举租户
CREATE INDEX IF NOT EXISTS idx_sso_users_active_area_tenant
ON sso_users(status, deleted_at, area, tenant_name);
-- 租户节点:按地区 / 租户 枚举部门,兼容 dep_name / dep_short_name
CREATE INDEX IF NOT EXISTS idx_sso_users_active_tenant_dep_expr
ON sso_users(status, deleted_at, tenant_name, (COALESCE(dep_name, dep_short_name, '')));
-- 部门节点:按租户 + 部门 枚举组织
CREATE INDEX IF NOT EXISTS idx_sso_users_active_tenant_dep_ou_name
ON sso_users(status, deleted_at, tenant_name, (COALESCE(dep_name, dep_short_name, '')), ou_name);
-- 叶子节点:按地区快速命中组织名称 / 组织ID
CREATE INDEX IF NOT EXISTS idx_sso_users_active_area_ou_name
ON sso_users(status, deleted_at, area, ou_name);
CREATE INDEX IF NOT EXISTS idx_sso_users_active_area_ou_id
ON sso_users(status, deleted_at, area, ou_id);
-- 部门展开时若只按 area + department 过滤,也给表达式索引
CREATE INDEX IF NOT EXISTS idx_sso_users_active_area_dep_expr
ON sso_users(status, deleted_at, area, (COALESCE(dep_name, dep_short_name, '')));
COMMIT;