Zwei Tabellen vergleichen -> Timeout :(

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Matlock
Mitglied
Beiträge: 288
Registriert: 01.07.2003 12:32
Wohnort: Südpfalz
Kontaktdaten:

Zwei Tabellen vergleichen -> Timeout :(

Beitrag von Matlock »

Folgendes Problem:

Ich möchte zwei Tabellen vergleichen und zwar wie folgt: In Tabelle 1 gibt es Datensätze, die überflüssig sind und zwar die, die in Tabelle 2 keine Entsprechung haben. Also schaue ich, ob es in Tabelle 2 den Namen auch gibt, wenn nicht, soll der überflüssige Datensatz aus der Tabelle 1 angezeigt (und in einem späteren Schritt gelöscht) werden.

Dazu hab ich mir folgende Abfrage zusammengestellt:

Code: Alles auswählen

$query = "select tabelle1.id, tabelle1.name from tabelle1 LEFT JOIN tabelle2 ON tabelle1.name = tabelle2.nachname where ISNULL(tabelle2.nachname) LIMIT 25"; 
Das LIMIT 25 kann man sich erstmal wegdenken, das diente nur, um zu schauen, woran es liegt, daß es nicht funktioniert. Und auch mit dem Limit klappts nicht.

"tabelle1.name = tabelle2.nachname" durch "tabelle1.name LIKE tabelle2.nachname" ersetzen bringts auch nicht.

Daß es nicht klappt, liegt nicht etwa am Statement selbst, denn das ist offenbar valide und läuft auch (manchmal) durch, mit Limit 5 meinetwegen, aber auch dann nicht immer.

Die Abfrage dauert, auch mit geringem Limit, ewig. Meist kommt es zu einem Timeout, was ich daran sehe, daß im IE "Server nicht gefunden" angezeigt wird.

In beiden Tabellen sind je rund 25.000 Datensätze. Ich kann mir schon denken, daß es dadurch recht lange geht, denn schließlich müssen für jeden Datensatz in Tabelle 1 alle Datensätze in Tabelle 2 abgecheckt werden. Das macht im Extremfall dann 25000*25000 Aktionen. Oder so ähnlich.

Wie auch immer: Wie kriege ich das ganze performant zum laufen?
Matlock
Mitglied
Beiträge: 288
Registriert: 01.07.2003 12:32
Wohnort: Südpfalz
Kontaktdaten:

Beitrag von Matlock »

Die Anfrage hat sich erledigt.

Das Anlegen von Indizes für die von der Abfrage betroffenen Felder in den beteiligten Tabellen hat sich als hilfreich erwiesen :grin:
Antworten

Zurück zu „Coding & Technik“