Mysql
 sql >> Base de données >  >> RDS >> Mysql

Optimiser la requête d'auto-jointure MySQL

il vous manque un index. Essayez d'utiliser EXPLAIN pour analyser votre requête, cela vous aidera beaucoup.

La solution est simple, la voici :http://sqlfiddle.com/# ! 2/56deb/1/0

Vous devez ajouter un index qui inclut les colonnes utilisées dans l'instruction where dans l'ordre où elles sont utilisées :

KEY `night_of_2` (`night_of`,`student_id`,`check_class`)

Il faut aussi forcer l'utilisation de l'index sur la jointure, puisque vous joignez la table à elle-même :

JOIN checks checks2

FORCE INDEX ( night_of_2 ) ON ( checks1.night_of =checks2.night_of )

(s'il y a un meilleur moyen, j'aimerais le savoir) :)

Cordialement,