Ich führe eine interne Abfrage mit zwei Tabellen auf dem MySQL-Server und es ist sehr langsam, es dauert 3 Stunden bis zum Ende.Innere Join-Abfrage, die mit indexierter Tabelle sehr langsam ausgeführt wird?
UPDATE table_A ta
JOIN table_B tb
ON ta.field1= tb.field1
AND ta.field2 = tb.field2
SET ta.field2 = tb.field2,
ta.field3 = tb.field3
WHERE tb.field5 = 'ABC'
TABLE_A hat 650.000 Zeilen Table_B hat 100.000 Zeilen
Sowohl ta. field1
, ta. field2
, tb. field1
, tb. field2
, tb field5
sind alle indiziert und in den EXPLAIN-Ergebnissen gezeigt.
Irgendeine Idee, wie man es schneller laufen lässt?
fügen Sie die Indexerstellung sql, vielleicht Index ist falsch, offensichtlich wollen einen Index auf tb.field5 – Andrew
Sie aktualisieren Felder, die Sie Index haben. Warum brauchst du es überhaupt? –
Ich habe diese Frage nicht abgelehnt, aber bitte in Zukunft, wenn Sie um Hilfe zur Abfrageoptimierung bitten, fügen Sie die Ausgabe von 'SHOW CREATE TABLE' für jede Tabelle in der Abfrage ein, damit wir die Datentypen, Indizes und Einschränkungen sehen können . Nehmen Sie auch die Ausgabe von EXPLAIN auf. –