Files
SharedClassManager/sql/upgrades/v2.1.sql
2026-05-29 08:32:28 +08:00

137 lines
4.6 KiB
SQL

-- ===========================================
-- 班级操行分管理系统 - v2.0.1 → v2.1 升级脚本
-- 主要内容:添加缺失的数据库索引,优化查询性能
-- ===========================================
-- ===========================================
-- 升级步骤 1: conduct_records 表添加 student_id + created_at 联合索引
-- ===========================================
DROP PROCEDURE IF EXISTS `upgrade_add_conduct_student_created_idx`;
DELIMITER $$
CREATE PROCEDURE `upgrade_add_conduct_student_created_idx`()
BEGIN
IF NOT EXISTS (
SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'conduct_records'
AND INDEX_NAME = 'idx_student_created'
) THEN
ALTER TABLE `conduct_records` ADD INDEX `idx_student_created` (`student_id`, `created_at`);
END IF;
END$$
DELIMITER ;
CALL `upgrade_add_conduct_student_created_idx`();
DROP PROCEDURE IF EXISTS `upgrade_add_conduct_student_created_idx`;
-- ===========================================
-- 升级步骤 2: conduct_records 表添加 recorder_id 索引
-- ===========================================
DROP PROCEDURE IF EXISTS `upgrade_add_conduct_recorder_idx`;
DELIMITER $$
CREATE PROCEDURE `upgrade_add_conduct_recorder_idx`()
BEGIN
IF NOT EXISTS (
SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'conduct_records'
AND INDEX_NAME = 'idx_recorder_id'
) THEN
ALTER TABLE `conduct_records` ADD INDEX `idx_recorder_id` (`recorder_id`);
END IF;
END$$
DELIMITER ;
CALL `upgrade_add_conduct_recorder_idx`();
DROP PROCEDURE IF EXISTS `upgrade_add_conduct_recorder_idx`;
-- ===========================================
-- 升级步骤 3: attendance_records 表添加 date 索引
-- ===========================================
DROP PROCEDURE IF EXISTS `upgrade_add_attendance_date_idx`;
DELIMITER $$
CREATE PROCEDURE `upgrade_add_attendance_date_idx`()
BEGIN
IF NOT EXISTS (
SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'attendance_records'
AND INDEX_NAME = 'idx_date'
) THEN
ALTER TABLE `attendance_records` ADD INDEX `idx_date` (`date`);
END IF;
END$$
DELIMITER ;
CALL `upgrade_add_attendance_date_idx`();
DROP PROCEDURE IF EXISTS `upgrade_add_attendance_date_idx`;
-- ===========================================
-- 升级步骤 4: login_logs 表添加 username + created_at 联合索引
-- ===========================================
DROP PROCEDURE IF EXISTS `upgrade_add_login_username_created_idx`;
DELIMITER $$
CREATE PROCEDURE `upgrade_add_login_username_created_idx`()
BEGIN
IF NOT EXISTS (
SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'login_logs'
AND INDEX_NAME = 'idx_username_created'
) THEN
ALTER TABLE `login_logs` ADD INDEX `idx_username_created` (`username`, `created_at`);
END IF;
END$$
DELIMITER ;
CALL `upgrade_add_login_username_created_idx`();
DROP PROCEDURE IF EXISTS `upgrade_add_login_username_created_idx`;
-- ===========================================
-- 升级步骤 5: operation_logs 表添加 operator_id + created_at 联合索引
-- ===========================================
DROP PROCEDURE IF EXISTS `upgrade_add_operation_operator_created_idx`;
DELIMITER $$
CREATE PROCEDURE `upgrade_add_operation_operator_created_idx`()
BEGIN
IF NOT EXISTS (
SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'operation_logs'
AND INDEX_NAME = 'idx_operator_created'
) THEN
ALTER TABLE `operation_logs` ADD INDEX `idx_operator_created` (`operator_id`, `created_at`);
END IF;
END$$
DELIMITER ;
CALL `upgrade_add_operation_operator_created_idx`();
DROP PROCEDURE IF EXISTS `upgrade_add_operation_operator_created_idx`;
-- ===========================================
-- 升级步骤 6: semester_archives 表添加 semester_id 索引
-- ===========================================
DROP PROCEDURE IF EXISTS `upgrade_add_archive_semester_idx`;
DELIMITER $$
CREATE PROCEDURE `upgrade_add_archive_semester_idx`()
BEGIN
IF NOT EXISTS (
SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'semester_archives'
AND INDEX_NAME = 'idx_semester_id'
) THEN
ALTER TABLE `semester_archives` ADD INDEX `idx_semester_id` (`semester_id`);
END IF;
END$$
DELIMITER ;
CALL `upgrade_add_archive_semester_idx`();
DROP PROCEDURE IF EXISTS `upgrade_add_archive_semester_idx`;