Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Otimize a consulta de autojunção do MySQL


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,