MySQL-Anweisungsausführungszeit zu hoch
Beim Versuch, Abfragen in einer großen Datenbank mit etwa 1 Million Datensätzen auszuführen, kam es zu längeren Ausführungszeiten. Insbesondere war eine Abfrage zum Abrufen von Datensätzen aus der Tabelle „Bewertungen“ besonders langsam:
select * from `ratings` order by id limit 499500, 500
Obwohl ein Index für die Spalte „id“ verwendet wurde, blieb das Problem bestehen. Die Reduzierung der Tabellengröße auf 10.000 Datensätze führte jedoch zu deutlich schnelleren Abfragezeiten.
Erklärung:
Bei der Untersuchung des Abfrageplans mithilfe der „EXPLAIN“-Anweisung war dies der Fall ergab, dass die ursprüngliche Abfrage einen vollständigen Tabellenscan verwendete, was zu einer ineffizienten Ausführung führte. Im Gegensatz dazu wurde beim Hinzufügen einer „Where“-Klausel ein effizienterer Bereichsindex-Scan verwendet, was die Leistung erheblich verbesserte.
select * from `ratings` where id>=499501 limit 500
Überlegungen:
Verwendung von a Die „where“-Klausel zum Filtern der Ergebnisse kann die Abfrageleistung durch die Verwendung geeigneter Indizes erheblich verbessern.
Es ist wichtig sicherzustellen, dass innerhalb der keine Deadlocks auftreten Datenbank, was auch zu einer langsamen Abfrageausführung führen kann.
Das obige ist der detaillierte Inhalt vonWarum ist meine MySQL-Abfrage trotz eines Index so langsam?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!