PDA

View Full Version : SQL Update



Seiten : [1] 2 3

Robi
01-03-10, 12:21
Hi *all
ich habe eine Datei mit Key + datum(8N, jjjjmmtt)
und eine 2. Datei mit Key, Feld und Jahr Monat Tag.

Nun will ich das Datum der 1. Datei als Update in die 2 Datei schreiben

wie weise ich das am sinvollsten zu ?

update DATEI2 a set Jahr = (select
Dec(substr(datum, 1, 4)) from DATEI1 b where a.key1 =
b.key1)
where exists(select * from DATEI1 c where
a.key1= c.key1)

und das ganze 3 mal ? oder geht es einfacher
Danke
Robi

andreaspr@aon.at
01-03-10, 12:43
hi,

probiers mal ohne der letzten where-klausel


update DATEI2 a set Jahr = (select
Dec(substr(datum, 1, 4)) from DATEI1 b where a.key1 =
b.key1)


lg andreas

Fuerchau
01-03-10, 13:00
Nun ja, das "exists" ist schon erforderlich, wenn der Key in Datei1 mal nicht vorhanden ist.

Aber ansonsten ist das schon korrekt, wenn du in der Datei 2 die Felder Jahr/Monat/Tag in 3 Feldern hast, benötigst du auch 3 Subselects.
Dies kannst du aber auch in 1 Befehl machen:

update myfile set
F1 = (Select ...)
,F2 = (select ...)
:
where ...

Ab V5R4 gilt wohl auch fogende Syntax:

Update myfile set
(F1, F2, ...) =
(select X1, X2, X3 from ... where ...)
where ...

Robi
01-03-10, 13:11
Ohne exists geht es nicht, Null Fehler

Die V5R4 Syntax war mir auch grade wieder eingefallen
Nur läuft das bei 490.000 zu ändernden Sätzen bei 2 Mio in der Datei2 (es sind 4 Key Felder) > 3 Stunden

da ist RPG schneller :)

Danke
Robi

Fuerchau
01-03-10, 13:14
Da würde ich mir mal ansehen, ob es für die Keyfelder auch Indexe ohne Select/Omit gibt bzw. die Key-Definitionen identisch sind !.
3 Stunden ist definitiv zu lang.

Robi
01-03-10, 13:29
Gibt es .
die 'üblichen' Beschleuniger hab ich alle durch.
Daher die Frage nach was anderem ...
Danke
Robi

andreaspr@aon.at
01-03-10, 13:39
sind das sql-tabellen?
wenn nein, glaub ich sofort, dass es mit rpg schneller ist, da in dem fall die alte classic quere engine verwendet wird.

werden von sql auch die indices wirklich verwendet? entweder mittelds debug oder visual explain (im iseries navigator) nachschauen, was sql da wirklich macht bzw. wo da der flaschenhals ist.

Fuerchau
01-03-10, 13:42
Ich könnte da noch mein SQLCPY anbieten.
Dieses bietet auch Update-Funktionen.

Robi
01-03-10, 13:45
werden von sql auch die indices wirklich verwendet? entweder mittelds debug oder visual explain (im iseries navigator) nachschauen, was sql da wirklich macht bzw. wo da der flaschenhals ist.

Danke, das läuft bei mir unter den 'üblichen' Beschleunigern
Das ist alles im grünen Bereich

Und da das RPG pgm mittlereile auch schon durch ist ...

Danke sehr
Robi

AS400.lehrling
01-03-10, 13:50
Werfe mal Cobol in die Runde:)

Gruß AS400.lehrling