está faltando um índice. Tente usar EXPLAIN para analisar sua consulta, isso vai te ajudar muito.
A solução é simples, aqui está:http://sqlfiddle.com/#! 2/56deb/1/0
Você precisa adicionar um índice que inclua as colunas usadas na instrução where na ordem em que são usadas:
KEY `night_of_2` (`night_of`,`student_id`,`check_class`)
Além disso, você precisa forçar o uso do índice na junção, pois está unindo a tabela a ela mesma:
JOIN checks checks2
FORCE INDEX ( night_of_2 ) ON ( checks1.night_of =checks2.night_of )
(se houver uma maneira melhor eu gostaria de saber sobre isso) :)
Cumprimentos,