Sven Rautenberg: Performance bei abgleich von 2 Tabellen in msql

Beitrag lesen

Moin!

Möglicherweise ist der genrell Ansatz mittels join falsch, aber da wüßte ich gerne mal euren Rat welcher msql-Syntax nicht nur zur Lösung, sondern zu schnellsten lösung führt.

Abfragesyntax allein hilft da nicht. Was sagt der Ausführungsplan, den du mit einem vorangestellten EXPLAIN bekommst? Konnte MySQL beispielsweise Indexe nutzen?

Das y fehlt eventuell absichtlich: http://en.wikipedia.org/wiki/MSQL

Eine Alternative zum Join wäre eine Subquery. EXISTS in Verbindung mit einer Correlated Subquery könnte ich mir vorstellen.

Datenbanken haben es immer schwerer, etwas nichtexistentes zu finden. Auf existierende Datensätze zeigen idealerweise Indices. Auf Nichtexistentes zeigt ... nichts.

Eine generell gültige Antwort zu Performancefragen kann man nicht geben. Der Optimizer entscheidet zum Beispiel nicht nur anhand von nutzbaren Indexen, sondern auch solchen Größen wie der Anzahl der Datensätze in der Tabelle, welche Strategie zur Ergebnisfindung er verfolgt.

Da es hier anscheinend um ein Synchronisationsproblem zwischen Backup und Original geht, sollte man in jedem Fall auch über eine Änderung des programmatischen Ansatzes nachdenken, indem man den Sync-Workflow in Daten schreibt, die die Fragen des Syncs dann wieder performant beantworten könnten.

Auf der anderen Seite: Zweimal 70k Datensätze ist doch eigentlich ein Witz, warum sollte irgendein heutiger Computer dabei ein Problem haben? Außer man macht wirklich grobe Fehler bei der Abfrage.

- Sven Rautenberg