-- ============================================================================
-- 性能优化：认证相关表索引优化
-- 创建日期: 2026-03-19
-- 描述: 为认证相关表添加复合索引，优化高频查询性能
-- ============================================================================

SET NAMES utf8mb4;

-- ============================================================================
-- 1. sys_user_enterprise_verification 索引优化
-- ============================================================================

-- 复合索引：用户ID + 认证状态（isUserFullyVerified 和 getUserVerificationStatus 的核心查询）
-- 查询: WHERE user_id = ? ORDER BY create_time DESC LIMIT 1
-- 查询: WHERE user_id = ? AND verification_status = 'APPROVED'
ALTER TABLE `sys_user_enterprise_verification`
    ADD INDEX `idx_user_status` (`user_id`, `verification_status`) USING BTREE COMMENT '用户ID+认证状态复合索引，优化认证状态查询';

-- 创建时间索引（管理列表按时间排序）
ALTER TABLE `sys_user_enterprise_verification`
    ADD INDEX `idx_create_time` (`create_time`) USING BTREE COMMENT '创建时间索引，优化时间范围查询';

-- 企业名称索引（管理页面按企业名称搜索）
ALTER TABLE `sys_user_enterprise_verification`
    ADD INDEX `idx_enterprise_name` (`enterprise_name`(50)) USING BTREE COMMENT '企业名称前缀索引，优化模糊搜索';

-- ============================================================================
-- 2. sys_user_identity_verification 索引优化
-- ============================================================================

-- 复合索引：用户ID + 认证状态（isUserFullyVerified 的核心查询）
ALTER TABLE `sys_user_identity_verification`
    ADD INDEX `idx_user_status` (`user_id`, `verification_status`) USING BTREE COMMENT '用户ID+认证状态复合索引，优化认证状态查询';

-- 创建时间索引（管理列表按时间排序）
ALTER TABLE `sys_user_identity_verification`
    ADD INDEX `idx_create_time` (`create_time`) USING BTREE COMMENT '创建时间索引，优化时间范围查询';

-- ============================================================================
-- 3. sys_verification_audit_log 索引优化
-- ============================================================================

-- 复合索引：用户ID + 操作时间（查询某用户的审核历史，按时间排序）
ALTER TABLE `sys_verification_audit_log`
    ADD INDEX `idx_user_time` (`user_id`, `operation_time`) USING BTREE COMMENT '用户ID+操作时间复合索引，优化用户审核历史查询';

-- ============================================================================
-- 4. dc_employee_qr_code 索引优化
-- ============================================================================

-- 复合索引：员工ID + 二维码状态（查询员工有效二维码）
ALTER TABLE `dc_employee_qr_code`
    ADD INDEX `idx_employee_status` (`employee_id`, `qr_code_status`) USING BTREE COMMENT '员工ID+状态复合索引，优化员工有效二维码查询';

-- 复合索引：二维码状态 + 过期时间（定时清理过期二维码）
ALTER TABLE `dc_employee_qr_code`
    ADD INDEX `idx_status_expiry` (`qr_code_status`, `expiry_time`) USING BTREE COMMENT '状态+过期时间复合索引，优化过期二维码清理查询';

-- ============================================================================
-- 完成
-- ============================================================================

SELECT '认证相关表性能索引优化完成！' AS message;
