MySQL-Abfrageoptimierung für große Tabellen mit langsamer Ausführungszeit
Die Ausführung Ihrer MySQL-Abfrage dauert über eine Minute, da ihr ein effizienter Index fehlt um den Abruf von Daten zu optimieren. Die enorme Größe der Tabelle, insbesondere über 1 Million Datensätze, verschärft das Problem.
Die Indizierung der Tabelle anhand der ID-Spalte ist entscheidend für die Beschleunigung von Abfragen, bei denen nach ID sortiert werden muss. Basierend auf den bereitgestellten Informationen scheint es jedoch, dass die Indizierung allein nicht ausreicht.
Hier sind einige Vorschläge zur Verbesserung der Abfrageleistung:
Verwenden Sie eine Bereichsabfrage mit WHERE-Klausel
Anstatt LIMIT zum Abrufen eines bestimmten Datensatzbereichs zu verwenden, sollten Sie die Verwendung einer WHERE-Klausel mit relationalen Operatoren in Betracht ziehen. Die folgende Abfrage verwendet beispielsweise eine Bereichsabfrage, um Datensätze mit ID-Werten größer oder gleich 499501 auszuwählen und begrenzt das Ergebnis auf 500 Zeilen:
select * from `ratings` where id >= 499501 limit 500;
Diese Abfrage sollte deutlich schneller ausgeführt werden, da sie den Index nutzt id-Spalte, um die gewünschten Datensätze effizient zu finden.
Erklären Sie die Abfrage Planen
Um das Problem weiter zu beheben, führen Sie eine EXPLAIN-Abfrage aus, um Einblicke in den Abfrageausführungsplan zu erhalten. Dadurch erhalten Sie Details zum Typ der Abfrage, den verwendeten Indizes und der geschätzten Anzahl der zu scannenden Zeilen.
explain select * from `ratings` where id >= 499501 limit 500;
Deadlocks ausschließen
Deadlocks treten auf, wenn Zwei oder mehr gleichzeitige Transaktionen warten darauf, dass die andere Transaktion die Sperre freigibt, wodurch effektiv verhindert wird, dass eine der beiden Transaktionen fortgesetzt wird. Auch wenn die bereitgestellten Informationen keinen Deadlock als mögliche Ursache vermuten lassen, ist es dennoch eine Überlegung wert.
Das obige ist der detaillierte Inhalt vonWarum ist meine MySQL-Abfrage in einer großen Tabelle so langsam und wie kann ich sie optimieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!