Perfrormance Tip

Hinweise, Tips und Tricks, FAQs - keine Anfragen!!

Re: unterschiedliches abarbeiten

Postby Silke1341 » Wed Jan 05, 2005 6:44 pm

GERDLA hat geschrieben:Dir ist schon klar, dass die beiden Codestrecken in deinem Posting am Anfang nicht dasselbe tun, oder?


Hallo black_adept,

was willst du mir genau sagen, stehe wohl
etwas auf der Leitung. Bitte noch kleinen Tipp.

grüsse

gerdla

der geschachtelte SELECT liest alle MATNR und versucht einen Text aus MAKT dazuzulesen, während der JOIN nur die Sätze liefert, wo es zur MATNR auch einen Text in der MAKT gibt.
Spätestens in einem mehrsprachigem System findet der JOIN mehr Daten, weil nicht auf die Sprache (MAKT-SPRAS) geprüft wird.

Korrekterweise sollte der Fall nicht auftreten, dass es zu einem Material nicht mindestens eine Text gibt, aber es kommt gerade beim maschinellen Aufbau einer Materialstamms durchaus vor...
Silke1341
.....
.....
 
Posts: 1985
Joined: Thu Aug 19, 2004 3:20 pm

Postby Alva1590 » Wed Jan 05, 2005 6:53 pm

Hallo Gerdla,

Stefan hat recht - dein erstes Coding findet MARA-Einträge, auch wenn dazu kein MAKT-Eintrag existiert. Durch den INNER JOIN werden jedoch nur die MARA-Einträge mit zugehörigem MAKT-Eintrag selektiert (gleiches Verhalten wie bei der Verwendung eines VIEWs !). Man müsste eigentlich einen LEFT OUTER JOIN verwenden, um dasselbe Ergenis zu erhalten.
Übrigens würde ich auch die Variante von "ereglam" bevorzugen - je nach Bedarf mit INNER oder OUTER JOIN.
Allerdings verwenden wir den ORDER BY nur dann, wenn's unbedingt notwendig ist, weil dadurch die DB belastet wird. Es ist im allgemeinen besser, die interne Tabelle selbst (auf dem Application-Server) zu sortieren. Meines Wissens gibt's dazu auch irgendwo von SAP eine Empfehlung.

mfg dele
Alva1590
.....
.....
 
Posts: 4387
Joined: Mon Dec 02, 2002 3:01 pm

Postby Ilja583 » Wed Jan 05, 2005 7:28 pm

Anonymous hat geschrieben:...
Allerdings verwenden wir den ORDER BY nur dann, wenn's unbedingt notwendig ist, weil dadurch die DB belastet wird. Es ist im allgemeinen besser, die interne Tabelle selbst (auf dem Application-Server) zu sortieren. Meines Wissens gibt's dazu auch irgendwo von SAP eine Empfehlung.


Hi dele,

nur mal so aus Neugier.
Wenn die Zieltabelle vom typ "sorted table" ist. Macht ihr einen Select ohne order in eine temporäre Zwischentabelle, sort und dann move in die "sorted table" oder direkt in die "sorted table"?

Und wo steht denn die SAP-Empfehlung? Ich mach das immer so nach Gefühl aber wenn SAP da tolle Ideen hat was am Besten ist würd ich gern dieses Wissen mitnehmen.
Ilja583
.....
.....
 
Posts: 1372
Joined: Wed Jan 08, 2003 3:00 pm

Postby Silke1341 » Wed Jan 05, 2005 10:06 pm

black_adept hat geschrieben:
Anonymous hat geschrieben:...
Allerdings verwenden wir den ORDER BY nur dann, wenn's unbedingt notwendig ist, weil dadurch die DB belastet wird. Es ist im allgemeinen besser, die interne Tabelle selbst (auf dem Application-Server) zu sortieren. Meines Wissens gibt's dazu auch irgendwo von SAP eine Empfehlung.


Hi dele,

nur mal so aus Neugier.
Wenn die Zieltabelle vom typ "sorted table" ist. Macht ihr einen Select ohne order in eine temporäre Zwischentabelle, sort und dann move in die "sorted table" oder direkt in die "sorted table"?

Und wo steht denn die SAP-Empfehlung? Ich mach das immer so nach Gefühl aber wenn SAP da tolle Ideen hat was am Besten ist würd ich gern dieses Wissen mitnehmen.

Ein Einfügen per SELECT... INTO TABLE führt automatisch zum korrekten Aufbau der Schlüssel. Weiß ich noch von meiner Zeit als Externer bei SAP. ;)
Wie das bei Verwendung von APPENDING TABLE ist, bin ich mir zwar nicht mehr sicher, müßte aber eigentlich analog laufen.
Ein ORDER BY ist dabei, soweit ich weiß, nicht notwendig.

@dele
nach meinem Kenntnisstand ist ein ORDER BY auf der Datenbank besser als ein SORT im ABAP, da die Datenbank ohnehin die Liste am Aufbauen ist. Hängt aber wahrscheinlich auch wieder von der Ergebnismenge ab.
(will mich hier aber jetzt nicht zu weit aus dem Fenster lehnen)
Silke1341
.....
.....
 
Posts: 1985
Joined: Thu Aug 19, 2004 3:20 pm

Re: unterschiedliches abarbeiten

Postby Arian1652 » Thu Jan 06, 2005 9:26 am

[quote="ereglam"][quote="GERDLA"]Dir ist schon klar, dass die beiden Codestrecken in deinem Posting am Anfang nicht dasselbe tun, oder?


AAH das meint ihr. Ja das war mir bewusst, dass der Innerjoin nur die übereinstimmenden Sätze liest und ich die Sprachabhängigkeiten vernachlässigt hatte.

Die Idee war auch nur zu zeigen, was man an Performance gewinnen kann. Aber ihr habt Recht, bei Beispielen sollte man auch möglichst korrekt arbeiten.

:wink:

Bis denn
Arian1652
...
...
 
Posts: 118
Joined: Wed Nov 10, 2004 10:27 am

Postby Ilja583 » Thu Jan 06, 2005 11:02 am

ereglam hat geschrieben:Ein Einfügen per SELECT... INTO TABLE führt automatisch zum korrekten Aufbau der Schlüssel. Weiß ich noch von meiner Zeit als Externer bei SAP. ;)
Wie das bei Verwendung von APPENDING TABLE ist, bin ich mir zwar nicht mehr sicher, müßte aber eigentlich analog laufen.


Danke für die Info, ereglam. Denn über diesen Effekt schweigt sich die Doku aus.
Ich hatte bisher immer Angst bei einem "SELECT... FOR ALL ENTRIES..." eine sortierte Tabelle als Ziel anzugeben, da ich nicht sortieren durfte - das entfällt ab nun nach dieser Info *freu* .
Ilja583
.....
.....
 
Posts: 1372
Joined: Wed Jan 08, 2003 3:00 pm

Postby Alva1590 » Thu Jan 06, 2005 1:06 pm

Hallo Gerdla,

Zu "sorted table":
Ein Select in eine sortierte Tabelle bewirkt implizit eine korrekte Sortierung. Order BY macht hier also keinen Sinn, weil praktisch zweimal sortiert wird (DB und ABAP). Denn wenn auch die DB die Sätze sortiert zurückgibt, muss SAP die Sortierreihenfolge der internen Tabelle sicherstellen. Dies gilt gerade bei dem Zusatz APPENDING TABLE, wenn also mehrfach in die Tabelle "hineinselektiert" wird.

Beispiel-Coding:
data: itmara like sorted table of mara
with non-unique key mtart matnr.
data: wamara like mara.
select * from mara into table itmara
order by matnr.
select * from mara appending table itmara
order by matnr.


Zu "order by":
In einem System mit zentraler DB ist immer die DB der Flaschenhals bzw. Engpass. Die Performance der DB entscheidet in den meisten Fällen über die Performance von Anwendungsprogrammen, unabhängig davon ob sie nun performance-optimiert entwickelt sind oder nicht.
Das gilt in besonderer Weise für SAP-Systeme mit der 3-stufigen Server-Struktur (DB-Server, Application-Serever, Präsentation-Server). Allein diese Struktur legt es nahe, die Last von der DB auf die verschiedenen Server zu verteilen.
Die ORDER-BY-Anweisung bewirkt, dass die DB die komplette Ergebnismenge erst einmal zwischenspeichern muss, um sie dann korrekt sortieren zu können. Das kostet also zusätzlich Speicher auf dem DB-Server. Ausserdem geht ORDER-BY immer am SAP-Puffer vorbei !

In der Online-Hilfezu ORDER-BY sind dazu entsprechende Hinweise zu finden.

mfg dele
Alva1590
.....
.....
 
Posts: 4387
Joined: Mon Dec 02, 2002 3:01 pm

Postby Alva1590 » Thu Jan 06, 2005 1:08 pm

black_adept hat geschrieben:
ereglam hat geschrieben:Ein Einfügen per SELECT... INTO TABLE führt automatisch zum korrekten Aufbau der Schlüssel. Weiß ich noch von meiner Zeit als Externer bei SAP. ;)
Wie das bei Verwendung von APPENDING TABLE ist, bin ich mir zwar nicht mehr sicher, müßte aber eigentlich analog laufen.


Danke für die Info, ereglam. Denn über diesen Effekt schweigt sich die Doku aus.
Ich hatte bisher immer Angst bei einem "SELECT... FOR ALL ENTRIES..." eine sortierte Tabelle als Ziel anzugeben, da ich nicht sortieren durfte - das entfällt ab nun nach dieser Info *freu* .

gern geschehen :D

Hab ich damals über eine der internen Hotlines in Erfahrung gebracht, als ich das in einer Anwendung einbauen wollte. 8)

Einzig bei der Verwendung von APPENDING sollte man das mal probieren, da ich hier mir nicht sicher bin und leider auch keinen Zugang mehr zu den SAP-internen Quellen habe... :oops:
Alva1590
.....
.....
 
Posts: 4387
Joined: Mon Dec 02, 2002 3:01 pm

Postby Silke1341 » Thu Jan 06, 2005 1:10 pm

sorry, vergaß mich anzumelden. :oops:

der vorherige Post ist natürlich von mir.
Silke1341
.....
.....
 
Posts: 1985
Joined: Thu Aug 19, 2004 3:20 pm

Previous

Return to Tips + Tricks & FAQs

Who is online

Users browsing this forum: No registered users and 27 guests