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

WHERE-Klausel beim Join fügt 4 Sekunden zur Ausführungszeit hinzu

Die wahrscheinlichste Erklärung ist, dass MySQL einen anderen Ausführungsplan wählt, wenn Sie dieses Prädikat hinzufügen.

Sie könnten die EXPLAIN-Ausgabe der beiden Abfragen vergleichen, die mit journey_day.day=3 Prädikat und das ohne.

Ich würde vermuten, dass MySQL eine andere Join-Reihenfolge wählt und MySQL sich dafür entscheidet, einen Index zu verwenden, der day hat als führende Spalte, wenn das Prädikat enthalten ist. Und wahrscheinlich führt das dazu, dass auf viel mehr Zeilen zugegriffen und diese untersucht werden müssen, oder möglicherweise erzeugt MySQL eine große Zwischenmenge, bevor es Zeilen herausfiltert.