Hallo Zusammen
Ich habe ein Problem mit einem Update auf eine relativ grosse Tabelle.
Tabelle a enthält rund 2 mio records
Tabelle b enthält rund 5,5 mio records
Die Verlinkung ist wie folgt:
Tabelle a hat 5 Attribute, wobei 2 wichtig sind
a.userkey
a.planfk
(ein Index existiert über beide Attribute)
Tabelle b hat 80 Attribute, wobei 4 wichtig sind
b.userkey
b.planfk
b.date
b.lineflag
(ein Index existiert über userkey, date, lineflag)
Mein Statement ist nun wie folgt:
UPDATE b SET b.planfk = (
SELECT a.planfk FROM a WHERE a.userkey = b.userkey)
b.date > '31-12-2006' AND
b.lineflag = 0;
Ich habe das Statement jetzt über Nacht laufen gelassen und es war immer noch nicht fertig. Ich weiss, die Verschachtelung ist ungünstig. Gibt es eine andere Möglichkeit ein solches Update vorzunehmen? Oder irgendwie eine Einstellung die einen Commit nach einer bestimmten Anzahl Records absetzt, damit der Cache zurückgesetzt wird?
Im voraus besten Dank für eure Hilfe.
Viele Grüsse
Andrea
Ich habe ein Problem mit einem Update auf eine relativ grosse Tabelle.
Tabelle a enthält rund 2 mio records
Tabelle b enthält rund 5,5 mio records
Die Verlinkung ist wie folgt:
Tabelle a hat 5 Attribute, wobei 2 wichtig sind
a.userkey
a.planfk
(ein Index existiert über beide Attribute)
Tabelle b hat 80 Attribute, wobei 4 wichtig sind
b.userkey
b.planfk
b.date
b.lineflag
(ein Index existiert über userkey, date, lineflag)
Mein Statement ist nun wie folgt:
UPDATE b SET b.planfk = (
SELECT a.planfk FROM a WHERE a.userkey = b.userkey)
b.date > '31-12-2006' AND
b.lineflag = 0;
Ich habe das Statement jetzt über Nacht laufen gelassen und es war immer noch nicht fertig. Ich weiss, die Verschachtelung ist ungünstig. Gibt es eine andere Möglichkeit ein solches Update vorzunehmen? Oder irgendwie eine Einstellung die einen Commit nach einer bestimmten Anzahl Records absetzt, damit der Cache zurückgesetzt wird?
Im voraus besten Dank für eure Hilfe.
Viele Grüsse
Andrea
Comment