|
|
@@ -1,57 +0,0 @@
|
|
|
--- ============================================
|
|
|
--- 优化 statisticStudyRecordAnswer 查询的索引
|
|
|
--- 根据慢SQL日志分析,该查询耗时约9.87秒,需要优化
|
|
|
--- ============================================
|
|
|
-
|
|
|
--- 1. learn_answer 表索引优化(最关键)
|
|
|
--- 支持按state和时间范围过滤,以及JOIN examinee_id
|
|
|
-CREATE INDEX IF NOT EXISTS idx_learn_answer_state_examinee_time ON learn_answer(state, examinee_id, create_time);
|
|
|
-CREATE INDEX IF NOT EXISTS idx_learn_answer_state_student_time ON learn_answer(state, student_id, create_time);
|
|
|
-CREATE INDEX IF NOT EXISTS idx_learn_answer_examinee_state ON learn_answer(examinee_id, state);
|
|
|
-
|
|
|
--- 2. learn_examinee 表索引优化
|
|
|
--- 支持按state和时间范围过滤,以及JOIN examinee_id
|
|
|
-CREATE INDEX IF NOT EXISTS idx_learn_examinee_state_examinee_time ON learn_examinee(state, examinee_id, end_time);
|
|
|
-CREATE INDEX IF NOT EXISTS idx_learn_examinee_state_student_time ON learn_examinee(state, student_id, end_time);
|
|
|
-CREATE INDEX IF NOT EXISTS idx_learn_examinee_examinee_state ON learn_examinee(examinee_id, state);
|
|
|
-CREATE INDEX IF NOT EXISTS idx_learn_examinee_paper_type_state_id ON learn_examinee(paper_type, state, paper_id);
|
|
|
-
|
|
|
--- 3. sys_user 表索引优化(如果还没有)
|
|
|
--- 支持JOIN操作
|
|
|
-CREATE INDEX IF NOT EXISTS idx_sys_user_user_id ON sys_user(user_id);
|
|
|
-CREATE INDEX IF NOT EXISTS idx_sys_user_card_id ON sys_user(card_id);
|
|
|
-
|
|
|
--- 4. dz_cards 表索引优化
|
|
|
--- 支持WHERE条件过滤和JOIN
|
|
|
-CREATE INDEX IF NOT EXISTS idx_dz_cards_card_id ON dz_cards(card_id);
|
|
|
-CREATE INDEX IF NOT EXISTS idx_dz_cards_dept_id ON dz_cards(dept_id);
|
|
|
-CREATE INDEX IF NOT EXISTS idx_dz_cards_school_id ON dz_cards(school_id);
|
|
|
-CREATE INDEX IF NOT EXISTS idx_dz_cards_class_id ON dz_cards(class_id);
|
|
|
-CREATE INDEX IF NOT EXISTS idx_dz_cards_campus_id ON dz_cards(campus_id);
|
|
|
-CREATE INDEX IF NOT EXISTS idx_dz_cards_campus_class_id ON dz_cards(campus_class_id);
|
|
|
-CREATE INDEX IF NOT EXISTS idx_dz_cards_agent_id ON dz_cards(agent_id);
|
|
|
-CREATE INDEX IF NOT EXISTS idx_dz_cards_leaf_agent_id ON dz_cards(leaf_agent_id);
|
|
|
-CREATE INDEX IF NOT EXISTS idx_dz_cards_card_no ON dz_cards(card_no);
|
|
|
-
|
|
|
--- 5. dz_teacher_class 表索引优化(用于teacherId过滤)
|
|
|
-CREATE INDEX IF NOT EXISTS idx_dz_teacher_class_teacher_id ON dz_teacher_class(teacher_id);
|
|
|
-CREATE INDEX IF NOT EXISTS idx_dz_teacher_class_teacher_class ON dz_teacher_class(teacher_id, class_id, out_date);
|
|
|
-
|
|
|
--- ============================================
|
|
|
--- 索引使用说明
|
|
|
--- ============================================
|
|
|
--- 1. 复合索引的顺序很重要:
|
|
|
--- - 过滤条件字段在前(state)
|
|
|
--- - JOIN字段在中间(examinee_id, student_id)
|
|
|
--- - 时间字段在后(create_time, end_time)
|
|
|
---
|
|
|
--- 2. 如果表数据量很大,建议定期分析表并更新统计信息:
|
|
|
--- ANALYZE TABLE learn_answer;
|
|
|
--- ANALYZE TABLE learn_examinee;
|
|
|
--- ANALYZE TABLE sys_user;
|
|
|
--- ANALYZE TABLE dz_cards;
|
|
|
---
|
|
|
--- 3. 如果某些索引使用率很低,可以考虑删除以节省存储空间
|
|
|
---
|
|
|
--- 4. 建议在业务低峰期执行索引创建,避免影响正常业务
|
|
|
-
|