Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Optimieren Sie die MySQL-Self-Join-Abfrage

Ihnen fehlt ein Index. Versuchen Sie, EXPLAIN zu verwenden, um Ihre Anfrage zu analysieren, es wird Ihnen sehr helfen.

Die Lösung ist einfach, hier ist sie:http://sqlfiddle.com/#! 2/56deb/1/0

Sie müssen einen Index hinzufügen, der die in der where-Anweisung verwendeten Spalten in der angegebenen Reihenfolge enthält:

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

Außerdem müssen Sie die Verwendung des Index für den Join erzwingen, da Sie die Tabelle mit sich selbst verbinden:

JOIN checks checks2

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

(Wenn es einen besseren Weg gibt, würde ich es gerne wissen) :)

Grüße,