Update sehr langsam...

Chimera16

Aktiver Benutzer
Beiträge
26
Hallo liebes Datenbankforum,

ich möchte in meiner Datenbank eine relativ einfache Abfrage durchführen, aber die dauert unglaublich lange... Ich habe schon versucht die Indexe zu verändern aber nichts hilft so richtig...
Es geht um folgende Abfrage:

UPDATE produkte.produktliste t1, produkte.produktliste_i t2
SET t1.SKU_I = t2.SKU
WHERE t1.SKU_I != t2.SKU;

Es werden insgesamt ca. 160.000 Zeilen verglichen. Ich habe die Abfrage nach ungefähr 1 Stunde abgebrochen.

Gibt es einen Weg die Abfrage zu Beschleunigen?

Ich habe jetzt 2 Indexe, einen auf SKU_I in produkte.produktliste und einen in SKU in produkte.produktliste_i.

Wäre über jede Antwort dankbar!
 
Werbung:
Der Index wird bei einer solch inhaltsfreien Aktion nicht viel nützen. Bist Du sicher, daß das, was Du machst, auch das ist, was Du erreichen willst?

Code:
test=*# select * from t1;
 id   
----   
  1   
  2   
  3   
  4   
  5   
  6   
  7   
  8
  9
 10
(10 rows)

Time: 0,155 ms
test=*# select * from t2;
 id
----
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
(10 rows)

Time: 0,174 ms
test=*# update t1 set id=t2.id from t2 where t1.id != t2.id;
UPDATE 10
Time: 0,374 ms
test=*# select * from t1;
 id
----
  2
  1
  1
  1
  1
  1
  1
  1
  1
  1
(10 rows)


Ungefähr das machst Du ja grade ...
 
Werbung:
Hallo @akretschmer vielen Dank für deine Antwort!

Ich glaube du hast Recht, die Abfrage ist falsch... So müsste sie sein:

UPDATE produkte.produktliste t1, produkte.produktliste_I t2
SET t1.SKU_I = t2.SKU
WHERE t1.HAN = t2.HAN
AND t1.EAN = t2.EAN
AND t1.SKU_I != t2.SKU;

Die Tabelle produkte.produktliste_i enthält aktuelle Informationen aus einer Datendatei, es soll dann z.B. auch produkte.produktliste_a geben, die enthält dann Informationen aus einer anderen Datendatei.
Am Ende möchte ich dass die Werte aus beiden Tabellen mit der produkte.produktliste verglichen und aktualisiert werden.


Da es "noch" keine produkte.produktliste_a gibt, ist der Befehl jetzt einfach nur stumpfes übernehmen.

So möchte ich dass SQL erkennt wenn bei HAN "XYZ" und EAN "YXZ" in Tabelle produkte.produktliste_i eine andere SKU ist
, als in produkte.produktliste mit den selben Werten "EAN" und "Han" und diese dann updated.
 
Zurück
Oben