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

Warum kann ein Index eine Abfrage wirklich langsam machen?

Weil Sie immer noch alle Daten aus Index + Datendatei lesen müssen. Da Sie kein where verwenden Bedingung - Sie haben immer den Abfrageplan, der auf alle Daten Zeile für Zeile zugreift, und Sie können damit nichts anfangen.

Wenn die Leistung für diese Abfrage wichtig ist und sie häufig ausgeführt wird, würde ich vorschlagen, die Ergebnisse in einer temporären Tabelle zwischenzuspeichern und sie stündlich (täglich usw.) zu aktualisieren.

Warum es langsamer wird:Weil die Daten im Index bereits sortiert sind und wenn mysql die Kosten der Abfrageausführung berechnet, denkt es, dass es besser ist, bereits sortierte Daten zu verwenden, sie dann zu gruppieren und dann Aggregate zu berechnen. Aber das ist es in diesem Fall nicht.