Heim >Datenbank >MySQL-Tutorial >Wie kann ich mithilfe von JOINs eine MySQL-Tabelle effizient mit Daten aus einer anderen Tabelle aktualisieren?
Effiziente Aktualisierung von MySQL-Tabellen mit Werten aus einer anderen Tabelle
Wenn Sie mit der Notwendigkeit konfrontiert werden, eine MySQL-Tabelle mit Informationen aus einer anderen zu aktualisieren, die ausschließlich auf Bei gemeinsamen Werten besteht ein gängiger Ansatz darin, einen JOIN zu verwenden. Das Erreichen einer optimalen Leistung bei solchen Abfragen erfordert jedoch sorgfältige Überlegungen.
Angenommen, Sie haben zwei Tabellen mit den folgenden Strukturen:
Original:
id | value |
---|---|
1 | hello |
2 | fortune |
3 | my |
4 | old |
5 | friend |
zu aktualisieren:
uniqueid | id | value |
---|---|---|
1 | NULL | something |
2 | NULL | anything |
3 | NULL | old |
4 | NULL | friend |
5 | NULL | fortune |
Ihr Ziel ist es, die ID-Spalte in tobeupdated basierend auf dem entsprechenden Wert im Original zu aktualisieren. Auch wenn die folgende Abfrage einfach erscheinen mag:
UPDATE tobeupdated, original SET tobeupdated.id = original.id WHERE tobeupdated.value = original.value
Sie kann extrem langsam sein, insbesondere bei großen Tabellen. Dies liegt daran, dass MySQL einen vollständigen Tabellenscan für beide Tabellen durchführen muss, um die passenden Zeilen zu finden.
Leistungsoptimierung
Um die Leistung zu verbessern, ist ein effizienterer Ansatz zu verwenden ein JOIN mit einer ON-Klausel:
UPDATE tobeupdated INNER JOIN original ON (tobeupdated.value = original.value) SET tobeupdated.id = original.id
Durch die Verwendung eines INNER JOIN berücksichtigt MySQL nur übereinstimmende Zeilen aus beiden Tabellen. Darüber hinaus kann die Sicherstellung, dass Indizes für die Wertespalten in beiden Tabellen vorhanden sind, die für die Suche erforderliche Zeit erheblich reduzieren.
Vereinfachte Syntax
Für Abfragen mit identischen Schlüsselnamen in In beiden Tabellen kann der Einfachheit halber eine USING-Klausel verwendet werden:
UPDATE tobeupdated INNER JOIN original USING (value) SET tobeupdated.id = original.id
Zusätzlich Überlegungen
Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe von JOINs eine MySQL-Tabelle effizient mit Daten aus einer anderen Tabelle aktualisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!