-- ================================================ -- 手动修复索引(简化版,直接执行) -- ================================================ USE study; -- ================================================ -- 1. 删除冗余索引(如果存在) -- ================================================ -- 删除 student_class 的冗余索引 ALTER TABLE student_class DROP INDEX IF EXISTS idx_student_id; SELECT '✅ student_class.idx_student_id 已删除(如果存在)' AS result; -- ================================================ -- 2. 创建必要的索引(如果不存在) -- ================================================ -- sys_user_role 表索引 ALTER TABLE sys_user_role ADD INDEX IF NOT EXISTS idx_user_id (user_id); ALTER TABLE sys_user_role ADD INDEX IF NOT EXISTS idx_role_id (role_id); SELECT '✅ sys_user_role 索引已创建' AS result; -- sys_role 表索引 ALTER TABLE sys_role ADD INDEX IF NOT EXISTS idx_del_flag (del_flag); SELECT '✅ sys_role 索引已创建' AS result; -- courseware 表索引 ALTER TABLE courseware ADD INDEX IF NOT EXISTS idx_course_id (course_id); SELECT '✅ courseware 索引已创建' AS result; -- learning_detail 表索引 ALTER TABLE learning_detail ADD INDEX IF NOT EXISTS idx_student_course (student_id, course_id); SELECT '✅ learning_detail 索引已创建' AS result; -- ================================================ -- 3. 分析表 -- ================================================ ANALYZE TABLE sys_user_role; ANALYZE TABLE sys_role; ANALYZE TABLE courseware; ANALYZE TABLE learning_detail; ANALYZE TABLE student_class; ANALYZE TABLE sys_user; SELECT '✅ 所有表已分析' AS result; -- ================================================ -- 4. 测试性能 -- ================================================ SELECT '=== 测试查询性能 ===' AS info; SET @start = NOW(6); SELECT COUNT(*) FROM sys_user_role WHERE user_id = 455; SET @end = NOW(6); SELECT TIMESTAMPDIFF(MICROSECOND, @start, @end)/1000 AS '角色查询耗时(ms)'; SELECT '✅ 所有优化完成!' AS result;