Nach meinem Kenntnisstand, öffnet eine SELECT-ENDSELECT für jeden Schleifendurchlauf eine Verbindung zur Datenbank über den impliziten Cursor. Dazu habe ich mal gehört, dass dies ca. 250ms benötigt.Haubi hat geschrieben:...oder den SELECT...PACKAGE-SIZE.ereglam hat geschrieben:die MARA im Produktivsystem würde ich auch eher selten komplett in eine interne Tabelle laden wollen. Für so etwas gibt es ja dann noch die OPEN CURSOR... FETCH mit blockweisem Bearbeiten der Ergebnismenge...Haubi hat geschrieben:Da gilt wieder genau das, was immer gilt, wenn es um Performance geht: It depends...
Wenn es nur darum geht, eine Tabelle auszulesen und die ausgelesenen Sätze zu verarbeiten (z.B. klassische Listverarbeitung) ist der SELECT...ENDSELECT überlegen.Außerdem kann mir keiner erzählen, dass ein LOOP langsamer sei als ein SELECT. Lediglich unter der Berücksichtigung der Ladezeit der Tabelle dürften kurze Tabellen insgesamt langsamer sein.
In jeder anderen Konstellation gewinnt der INTO TABLE.
Gruss,
Haubi
black_adept hat geschrieben:Um nochmal auf das ursprüngliche Posting zurückzukommen. Die Lösung von ereglam mit den Subqueries gefällt mir hier gar nicht, da ja nach einem "unkomplizierten" Lösung gesucht wurde. Und die Fragestellung an sich schreit doch nach einem doppelten Join.
Und auf dem System das ich hier habe ( mit mäßig gefüllten MARA (70.000) und MARC (200.000 )) ist der "einfache" Join ca. doppelt so schnell wie der Subquery.Code: Alles auswählen.
select >felder< into corresponding fields of table t_matnr from mara join marc as m1 on m1~matnr = mara~matnr join marc as m2 on m2~matnr = mara~matnr where m1~werks = >werk1< and m2~werks = >werk2<.
hallo all ihr bitfummler,black_adept hat geschrieben:Um nochmal auf das ursprüngliche Posting zurückzukommen. Die Lösung von ereglam mit den Subqueries gefällt mir hier gar nicht, da ja nach einem "unkomplizierten" Lösung gesucht wurde. Und die Fragestellung an sich schreit doch nach einem doppelten Join.
Und auf dem System das ich hier habe ( mit mäßig gefüllten MARA (70.000) und MARC (200.000 )) ist der "einfache" Join ca. doppelt so schnell wie der Subquery.Code: Alles auswählen.
select >felder< into corresponding fields of table t_matnr from mara join marc as m1 on m1~matnr = mara~matnr join marc as m2 on m2~matnr = mara~matnr where m1~werks = >werk1< and m2~werks = >werk2<.
damit war gemeint:ereglam hat geschrieben:Bitfummler hat geschrieben:ereglam hat geschrieben:...ging mir zu Anfang auch so. ...