-- Tăng tốc các truy vấn điểm danh của class_detail và bảng xếp hạng.
-- Bảng hiện có dữ liệu lịch sử trùng ở status=3, vì vậy chỉ thêm index thường.

SET @has_attendance_lookup_index := (
    SELECT COUNT(*)
    FROM information_schema.STATISTICS
    WHERE TABLE_SCHEMA = DATABASE()
      AND TABLE_NAME = 'student_attendances_tb'
      AND INDEX_NAME = 'idx_attendance_class_date_student_status'
);
SET @attendance_lookup_index_sql := IF(
    @has_attendance_lookup_index = 0,
    'ALTER TABLE `student_attendances_tb` ADD INDEX `idx_attendance_class_date_student_status` (`class_id`, `session_date`, `student_id`, `status`)',
    'SELECT 1'
);
PREPARE attendance_lookup_index_statement FROM @attendance_lookup_index_sql;
EXECUTE attendance_lookup_index_statement;
DEALLOCATE PREPARE attendance_lookup_index_statement;
