Inner Joins - Performance


Getting started ... Alles für einen gelungenen Start.

Moderatoren: Jan, Steff

Inner Joins - Performance

Beitragvon c0lt.seavers » 08.02.2006, 10:10

Hallo!

Hier bei uns im Unternehmen wir gar nicht mit INNER JOINS gearbeitet, nun frage ich mich ob dies so unperformant ist oder ob es an dem Nichtwissen einiger Programmierer liegt?!

Vielen Dank
c0lt
c0lt.seavers
ForumUser
 
Beiträge: 44
Registriert: 07.02.2006, 14:44
Dank erhalten: 0 mal

Sponsor

Alte ABAP-Entwicklerweisheit: Weißt du weder aus noch ein, baust du einen BADI ein

Beitragvon ABAP - Programmierer » 08.02.2006, 10:24

Hallo!

Ich denke mal das es ehem am 2-ten liegt.
Ohne inner-join muss man, wenn man den Key von 2 Tabellen hat auch 2 Selects machen.
Mit dem Inner-Join kannst du gleich 2,3, oder mehr Tabellen selektieren und schneller ist es auch noch.
Ganz nützlich ist auch die Alias-Funktion, denn dann musst du nicht immer den ganzen Tabellennamen eingeben.
Ich würde dir also empfehlen, wenn es geht mit Joins zu arbeiten.

mfg
ABAP - Programmierer
ForumUser
 
Beiträge: 35
Registriert: 22.09.2004, 11:03
Dank erhalten: 0 mal

Beitragvon ewx » 08.02.2006, 11:03

Also bei einem Kunden wurden alle(!) Joins umgestellt auf einzelne Selects...
Die Datenbank hat es trotz Verwendung von Schlüsselfeldern im Join nicht geschafft, die Daten direkt zu lesen. Bei einem Join über 4 Tabellen wurde z. B. in einem Fall bei der vierten Tabelle ein Full Table Scan gemacht... :?

Es hat keiner rausbekommen warum...

In der Regel stimmt es aber, dass ein Join schneller ist, als mehrere Selects.

Gruß,
Enno.
ewx
Top Expert
 
Beiträge: 3657
Registriert: 04.08.2003, 19:55
Wohnort: Schleswig-Holstein
Dank erhalten: 272 mal

Beitragvon Gast » 08.02.2006, 11:10

ewx hat geschrieben:Also bei einem Kunden wurden alle(!) Joins umgestellt auf einzelne Selects...
Die Datenbank hat es trotz Verwendung von Schlüsselfeldern im Join nicht geschafft, die Daten direkt zu lesen. Bei einem Join über 4 Tabellen wurde z. B. in einem Fall bei der vierten Tabelle ein Full Table Scan gemacht... :?

Es hat keiner rausbekommen warum...

Der Execution plan und die Prüfung, wie aktuell di DB-Statistiken sind, sollten aber weiterhelfen.

Und nicht immer ist ein Full Table Scan schlimm.
Gast
 

Beitragvon meinrad » 08.02.2006, 17:21

Hallo,
1. ca 10 Jahre lang gab es im R3 keine Joins. Dennoch
war performante Programmierung möglich.
2. JOINS über mehrere Tabellen sind meiner Meinung nach nicht immer leicht zu verstehen.
3. Es gibt wenige verlässliche Untersuchungen, welcher Zugriff am schnellsten ist. Ich habe vor Jahren in einem Buch, dessen Titel ich nicht mehr weiss (nicht SAP PRESS) über Perfomance-Analysen von SAP-Datenbankzugriffen gelesen, dass sich JOINS von DB zu DB unterschiedlich verhalten. ORACLE, Informix, MS-SQl. Bei ORACLE 8.x waren sie am besten. Auch die DB-Release spielt eine Rolle. Oftmals war ein ARRAY-Zugriff (select into table ) schneller. Selbst bei gleichem Betriebsystem. gleichem Datenbank-System und gleicher Hardware und ähnlicher Anzahl Einträge kann ich mir vorstellen, dass ein Zugriff unterschiedlich schnell ist, wenn auf unterschiedliche Weise rein geschrieben wurde.
meinrad
ForumUser
 
Beiträge: 67
Registriert: 06.03.2003, 15:24
Wohnort: Südbaden
Dank erhalten: 0 mal

Beitragvon Haubi » 08.02.2006, 19:20

Tach.

@meinrad:
Eine Diskussion pro/contra JOINs gab es hier schon mal, daher will ich mal nicht auf Übersichtlichkeit eingehen... ;)

@Topic:
Ich bevorzuge JOINs. Aber: bei grossen Abfragen (über >3 Tabellen) kann es tatsächlich zu Performace-Engpässen kommen. Bei mir hat mal die Indexqualität eine Rolle gespielt. Durch viele DELETE's und INSERT's war der Primärindex so verclustert, dass der Optimizer immer zu einem Full Table Scan gegriffen hat. Nach einem Indexneuaufbau war alles tutti.
IMHO sollte man sich mit JOINs auskennen, wissen, wo es dabei haken kann und im Bedarfsfall andere Techniken anwenden können.

Gruss,
Haubi
Das ABAP Kochbuch ab sofort bei Amazon...

I'd rather write code that writes code than write code...
.. ..|. |.|| ||| ..| |.|. .| |. .|. . .| |.. | .... .. ... |.|| ||| ..| |.. ||| |. | |. . . |.. ||. .|.. .| ... ... . ...
Haubi
Expert
 
Beiträge: 577
Registriert: 13.12.2002, 09:52
Wohnort: Braunschweig
Dank erhalten: 17 mal
Ich bin: Entwickler/in

Beitragvon joachim » 09.02.2006, 09:55

hallo,
teste doch einfach das verhalten zwischen inner-join und geschachteltem
select mit der se30, da bist du doch ganz schnell auf der sicheren seite.
joachim
joachim
ForumUser
 
Beiträge: 70
Registriert: 12.08.2005, 13:58
Wohnort: mainz
Dank erhalten: 2 mal

Beitragvon olli-x » 09.02.2006, 11:03

Hi,

Ich habe vor Jahren in einem Buch, dessen Titel ich nicht mehr weiss


war das vielleicht das hier:
http://www.amazon.de/exec/obidos/ASIN/3932588738/qid=1139479379/sr=1-34/ref=sr_1_2_34/028-4935609-6541328

Gruß,
Olli
olli-x
Specialist
 
Beiträge: 166
Registriert: 11.10.2004, 18:19
Dank erhalten: 1 mal

Beitragvon c0lt.seavers » 09.02.2006, 11:58

Ich arbeite nun schon seit gut 4 Jahren mit SAP und ich kenne nicht mal die SE30 :roll:. Danke liebe Mitarbeiter :evil:. Gibt es da noch mehr?
c0lt.seavers
ForumUser
 
Beiträge: 44
Registriert: 07.02.2006, 14:44
Dank erhalten: 0 mal

Beitragvon joachim » 09.02.2006, 12:09

hallo,
kann dir noch den sql-trace empfehlen (ST05). ich bringe kein programm in das produktivsystem ohne eine laufzeitanalyse bzw. die zugriffe aus der st05 kontrolliert habe, wobei die se30 einfacher zu lesen ist, da du in der auswertung sofort sehen kannst auf welcher tabelle (zugriffe)
du die meiste zeit verlierst.
joachim
joachim
ForumUser
 
Beiträge: 70
Registriert: 12.08.2005, 13:58
Wohnort: mainz
Dank erhalten: 2 mal

Beitragvon Gast » 09.02.2006, 13:52

Es gibt viele Firmen, in denen die ST05 nicht erlaubt ist.

Grund: Jeder meinte er müsse einen Trace starten... aber vergessen ihn wieder auszuschalten.

Folge: Riesige Datenmenge werden erstellt.
Gast
 


Zurück zu ABAP® für Anfänger

  Aktuelle Beiträge   
gelöst Zeichenprüfung
vor 18 Stunden von ralf.wenzel 7 Antw.
Smart Forms: Andere LETZTE SEITE in n-seitigem Formular
vor 2 Tagen von a-dead-trousers 1 Antw.
Performance-Problem bei Aufruf einer SAP-Klasse
Gestern von DeathAndPain 2 Antw.
gelöst ALV: Doppelte Toolbar
vor 3 Tagen von a-dead-trousers 3 Antw.
gelöst ALV: Dropdown und F4 Hilfe
vor 4 Tagen von Legxis 2 Antw.

  Ähnliche Beiträge beta
Joins
29.07.2011, 07:35 von a-dead-trousers 19 Antw.
gelöst Tabellen Joins
07.12.2016, 14:28 von ek53 3 Antw.
Equi Joins in ABAP
19.10.2011, 10:17 von ratsnus 1 Antw.
SQL und Performance
24.11.2005, 09:04 von Andreas G 2 Antw.
Performance von INE vs. EEQ
22.08.2013, 10:40 von black_adept 3 Antw.

 

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]