-
sql durch empfolene zugriffe langsamer
Hi *all
ich habe hier eine View die 3 Dateien miteinander verknüpft und mit Union noch 'Reste' hinten anklebt.
Wenn ich diese View im SQL anzeigen lasse, mit oder ohne Selektion ist das 'erträglich'
(1-2 Sekunden).
Mit einem SQLRPGLE Pgm mache ich mehrere Count(*) auf die View mit verschiedenen selects. Teilweise mit einer weiteren Verknüpfung.
Das Pgm zeigt 24 Zeilen, je Zeile werden 4 Sql ausgeführt.
Die Summe aller gezählten Sätze (über alle 24 Zeilen) ist < 1 Mio.
Auf das Bild warte ich ca. 4 Minuten !!
Und das seltsame ist. das ich das Gefühl habe, das es durch die vielen LF die ich anlegen sollte (lt. STRDBG) eher langsamer geworden ist.
Bei den LF ist m.E. einiges blödsinniges dabei, ich habe sie aber trotzdem angelegt.
Bsp.:
LF1 Feld5, Feld3, Feld7, Feld1
LF2 Feld1, Feld3, Feld5, Feld7
...
Im Prinzip immer diese 4 Felder in allen möglichen Kombinationen.
Seltsamerweise auch mit nur 3 Feldern trotzdem es ein lf mit 4 Feldern in gleicher Folge gibt
.
Egal, ich habe alles angelegt was empfohlen wurde.
Aber gefühlt ist das Pgm nun deutlich langsamer.
Es wird nun kein LF mehr empfohlen, auch nicht via Navigator
Hat noch jemand einen Tipp Wo ich drehen kann?
Code:
create view hissc#v01 as(
-- wieviele Monate?
-- alle Felder des unique keys in dem select
with xx as (select dec(substr(inhacd, 1, 2), 2, 0) as mon from cbuchp01
where finrcd = 0 and sprccd = 'D' and sakzcd = '6' and
sartcd = 'FORM' and rkeycd = 'CNT'),
-- aktuellste Satz je Teilnehmer?
yy as (
-- aktuelle Daten, deren 'normaler' Wert nicht älter als 24Monate ist
-- wobei die 24 aus dem codebuch kommt
select max(hcdejj*10000+hcdemm*100+hcdett) as dd, hcsunr, hcsun2, hcsu22
from hisscp
where hcklas = 'K10'
group by hcsunr, hcsun2, hcsu22
having max(hcdejj*10000+hcdemm*100+hcdett) >=
dec(replace(char(current_date-
(select mon from xx) Months, iso), '-', ''), 8, 0)),
-- hisscp satz da ich ja den Wert brauche
a as (
select dd as d, a.hcsunr, a.hcsu22, a.hcsun2,
hckate as maxwert
from hisscp a inner join yy on
yy.hcsunr=a.hcsunr and yy.hcsun2=a.hcsun2 and
yy.hcsu22=a.hcsu22 and
yy.dd = a.hcdejj*10000+a.hcdemm*100+a.hcdett
where a.hcklas = 'K10'
)
-- hisscp verknüpft mit aktenp und mandap
select azkey1, azkey2, azkey3, d, maxwert, dec(case when azsun2 = 3 then 2
else 1 end, 1, 0) as cnt,
azmk, azmst, makzfo, azdwit, azdwim, azdwij, azfonr
from aktenp, a, mandap
where a.hcsu22=azsun2 and a.hcsunr=azsunr and
azmaan = maaunr and azmanr = mamdnr
-- und nun noch die, die keinen gültigen Wert haben
union all
select azkey1, azkey2, azkey3, dec(20491231, 8, 0) as d,
'00000' as maxwert, azsun2 as cnt,
azmk, azmst, makzfo, azdwit, azdwim, azdwij, azfonr
from aktenp left outer join a on
azsunr=a.hcsunr and azsun2=a.hcsun2
inner join mandap on
azmanr = mamdnr and
azmaan=maaunr
where a.hcsunr is null
)
und
Code:
* je Zeile diese beiden sql, 2 mal, 2. mal als makzfo = 1
C/EXEC SQL
C+ SET :AMSFO_F =(SELECT COUNT(*) FROM HISSC#V01 WHERE AZFONR = :MASN
C+ AND AZDWIJ*10000+AZDWIM*100+AZDWIT <= :DTV AND MAKZFO = 0 AND
C+ MAXSCORE <> '00000')
C/END-EXEC
* ANZAHL MIT Wert GEMÄß MK/MST FREMD
C/EXEC SQL
C+ SET :AMSMS_F =(SELECT COUNT(*) FROM HISSC#V01 WHERE AZMK*1000+AZMST
C+ IN(SELECT DISTINCT MKKETT*1000+MKSTUF FROM MAKESP WHERE MKFORM = :MASN)
C+ AND AZDWIJ*10000+AZDWIM*100+AZDWIT <= :DTV AND MAKZFO = 0 AND
C+ MAXSCORE <> '00000')
C/END-EXEC
Danke
Robi
Das Notwendige steht über dem technisch machbaren.
(klingt komisch, funktioniert aber!)
Similar Threads
-
By dschroeder in forum NEWSboard Programmierung
Antworten: 14
Letzter Beitrag: 04-04-14, 07:32
-
By NEWSolutions Redaktion in forum NEWSolutions artikel
Antworten: 0
Letzter Beitrag: 02-11-13, 10:53
-
By Newbie in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 04-07-02, 08:19
-
By Kent in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 19-06-01, 10:45
-
By becama in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 07-04-01, 09:08
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks