Moin moin,
ich hab hier zwei Tabellen.
Die erste nennt sich ref_sp (ca. 86.000 Einträge, je 11 Spalten), die zweite router (ca. 60.000 Einträge, je 83 Spalten).
Aus den Daten beider Tabellen muss ich eine dritte Datenbank bilden ref_sp_r, die alle Daten aus ref_sp und das Feld router_name aus router enthält. Dafür habe ich folgende Abfrage geschrieben:
SELECT DISTINCT r.router_name AS hostname, s.vpn_id AS vpn_id, s.sp_no AS sp_no, s.oid_r AS roid, s.oid AS soid FROM ref_sp AS s, router AS r WHERE r.oid>0 AND r.oid=s.oid_r;
Das Problem ist einfach, die Abfrage funktioniert, dauert aber 25 Minuten (CPU ist ein Intel C2D), die Lösung nicht.
Was ich bisher probiert habe:
- INNER JOIN: Keine großartige Verbesserung
- Beider Tabellen in PHP laden und dort zueinander matchen (ca. 40Minuten)
- Tabelle ref_sp laden und mit einzelnen SELECT-Anfragen den hostname suchen (>1 Stunde)
- Umstellung von MyISAM auf InnoDB (ca. 40 Minuten)
Irgendwie muss es da noch potential geben, denn wenn ich die Abfrage mit INNER JOIN in der alten Access-DB ausführe (gleiche Datensätze) braucht die Ausführung gerade mal 5 Sekunden.
Vielen Dank im Vorraus!