-T: UPDATE - Tabelle zu gross?

Guten Tag alle zusammen,

ich hab hier eine Tabelle ("allCities") die hat 2Millionen Datensaetze und soll in einer Spalte ("location_id") neue Werte zugewiesen bekommen. Dazu muss ich insgesamt mit 3 Tabellen arbeiten, wobei die beiden anderen aber viel kleiner sind (hoechstens je 100 Datensaetze).

Mein Query lautet wie folgt:

UPDATE
allCities aC,
\_iso\_country-codes iso,
\_earth\_country-codes edo
SET aC.location_id = edo.location_id
WHERE aC.country_code = iso.code AND edo.name = iso.country

Dieser Query hat auf einer Tabelle mit 200 Datensaetzen bereits funktioniert. Nur mit der grossen Tabelle hab ich Probleme (schon eine Nacht durchlaufen lassen, hat mich aber mit nem Fehler am naechsten Morgen begruesst).

Ich hab keine Ahnung, wie ich das angehen soll. Toll waere die Aufgabe in Teilaufgaben zu zerlegen, "LIMIT" funzt aber nicht.

Bin fuer jeden Denkanstoss dankbar,

Gruss,

-T

  1. Hello,

    UPDATE
    allCities aC,
    \_iso\_country-codes iso,
    \_earth\_country-codes edo
    SET aC.location_id = edo.location_id
    WHERE aC.country_code = iso.code AND edo.name = iso.country

    du lässt also vor dem Ausführen 3 Tabellen per Kreuzprodukt zusammenführen. Bei 100 Datensätzen in jeder macht das 100*100*100 Datensätze. Selbst bei gesetzten Indizes sehe ich da für einen Join in eine 2 Mio Tabelle eine ziemlich hohe Laufzeit am Horizont...Ich fürchte, dir wird nicht viel anderes bleiben als

    1. auf Skript-Verarbeitung in Einzelaktionen
      oder
    2. selbst unterteilte Tabellen (--> temporär verschiedene Tabellen mit Datenauszügen anlegen)
      auszuweichen

    MfG
    Rouven

    --
    -------------------
    There's no such thing as a free lunch  --  Milton Friedman