Похоже, что запрос извлекает всех студентов и затем выполняет циклический перебор записей, чтобы найти поля student_id, которые имеют значение NULL.
Было бы более эффективно написать запрос, который конкретно запрашивал бы записи, которыеhave student_id IS NULL.
Метод сбора всех записей таблицы учеников будет отлично работать, если у вас около 100 учеников.Что происходит, когда он запускается в производство и в нем обучается 25 000 студентов?