Zusammenführen zweier int Tabellen

Alle Fragen rund um Basisthemen
21 Beiträge • Vorherige Seite 2 von 2 (current)
21 Beiträge Vorherige Seite 2 von 2 (current)

Beitrag von Willow (ForumUser / 7 / 0 / 0 ) »
Es läuft! Allerdings habe ich aus dem LEFT OUTER einen INNER JOIN gemacht.

Es läuft recht lange, aber ich bin nur der Student, der hier die Praktikumsaufgabe bekommen hat. ;)
Ob es später rentabel ist, soll meine Cheffin entscheiden!

VIELEN VIELEN Dank nochmal.

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Beitrag von CrashOverride (ForumUser / 10 / 0 / 0 ) »
Mit dem inner Join bekommst du nur nicht die Belege die in der VBUK aber nicht in der LIPS vorhanden sind.

Ich bin auch nur azubi im 2. Lehrjahr. Ich programmiere erst seit 8 Monaten in ABAP.

MfG Crash Override

Beitrag von Willow (ForumUser / 7 / 0 / 0 ) »
Hmm jo habs gemerkt.

Ich bekomme nur die Aufträge, die eine LS Nummer haben. Die aus der VBUK sind nicht vorhanden.
Mist! :?

Beitrag von CrashOverride (ForumUser / 10 / 0 / 0 ) »
Du kannst das ganze noch beschleunigen wenn Du für die LIPS einen Index über VGBEL anlegst, da er da momentan Bruteforce liest.

MfG Crash Override

Beitrag von Willow (ForumUser / 7 / 0 / 0 ) »
:?:

Bitte mit Beispiel. :)

Beitrag von CrashOverride (ForumUser / 10 / 0 / 0 ) »
Auszug aus der KB:
Suchaufwand klein halten

Die Treffermenge wird durch Einsatz der WHERE- und HAVING-Klauseln klein gehalten. Die Effizienz dieser Klauseln kann optimiert werden, indem sie passend zu den Indizes der Datenbanktabelle formuliert werden.

Datenbank-Indizes

Ein Index dient zur Unterstützung der schnelleren Selektion von Datenbankzeilen. Er besteht aus ausgewählten Feldern einer Datenbanktabelle, von denen eine Kopie in sortierter Reihenfolge angelegt wird. Bei richtiger Angabe von Indexfeldern in einer Bedingung der WHERE- oder HAVING-Klauseln, wird nur ein Teil des Index durchsucht (Index Range Scan).

Der Primärindex wird im R/3-System immer automatisch angelegt. Er setzt sich aus den Primärschlüsselfeldern der Datenbanktabelle zusammen. Es existiert also zu jeder Kombination der Felder des Indexes höchstens eine Zeile in der Tabelle. Ein solcher Index wird auch als UNIQUE bezeichnet.

Wenn der Primärindex nicht zur Bestimmung der Ergebnismenge benutzt werden kann, weil z.B. kein Feld des Primärindexes in einer Bedingung der WHERE oder HAVING-Klauseln vorkommt, wird die Tabelle vollständig durchsucht (Full Table Scan). In diesem Fall können Sekundärindizes angelegt werden, welche die zur Bestimmung der Ergebnismenge zu durchsuchenden Datensätze einschränken

Ein Sekundärindex wird mit dem Werkzeug ABAP Dictionary der ABAP Workbench angelegt. Dort können seine Spalten bestimmt werden und er kann als UNIQUE definiert werden. Allerdings sollte nicht für jede Kombination von Feldern in einer Bedingung ein Index definiert werden.

Ein Sekundärindex sollte dann angelegt werden, wenn nach Feldern selektiert wird, die noch in keinem Index enthalten sind, und die Performanz sehr schlecht ist. Weiterhin sollte ein Sekundärindex nur für Datenbanktabellen angelegt werden, auf die hauptsächlich lesend zugegriffen wird, da bei jeder Datenbankänderung auch der Index aktualisiert werden muß. Deshalb sollte sich ein Sekundärindex auch aus nicht mehr als vierFeldern zusammensetzen und es sollten nicht mehr als fünf Indizes für eine Datenbanktabelle angelegt werden.

Bei mehr als fünf Indizes pro Datenbanktabelle erhöht sich auch die Wahrscheinlichkeit, daß der Optimizer den falschen Index auswählt. Deshalb sollten bei mehreren Indizes pro Datenbanktabelle Überschneidungen vermieden werden.

Ein Sekundärindex sollte aus Spalten bestehen, über die häufig selektiert wird und die eine hohe Selektivität haben, d.h. es sollte geprüft werden, wieviel Prozent der Tabelleneinträge mit dieser Spalte selektiert werden. Je geringer dieser Prozentsatz ist, desto selektiver ist das Feld. Die selektivsten Felder sollten an den Anfang des Indexes gelegt werden. Ein neuer Sekundärindex sollte so selektiv sein, daß jedem Indexeintrag höchstens 5 Prozent der Einträge der Tabelle entsprechen. Andernfalls lohnt sich das Anlegen des Indexes nicht. Ein Index sollte auch nicht über schwach besetzte Felder, deren Feldwert für die meisten Sätze der Tabelle initial ist, angelegt werden.

Sind alle in der SELECT-Klausel angegebenen Spalten gleichzeitig im Index, so muß nach dem Indexzugriff kein zweiter Zugriff auf die eigentlichen Daten erfolgen. Werden in der SELECT-Klausel nur sehr wenige Spalten angegeben, lassen sich deutliche Performancegewinne erzielen, wenn diese Spalten alle mit in den Index aufgenommen werden.

Formulierung von Bedingungen für Indizes

Folgendes ist bei Bedingungen in WHERE- und HAVING-Klauseln zu beachten, damit die Suche auf den Indizes der Datenbanktabellen stattfindet und nicht als Full Table Scan:

Gleichheitsbedingungen mit AND verwenden

Die Indexsuche des Datenbanksystems ist besonders effizient, wenn alle Index-Felder mit dem Gleichheitsoperator (EQ, =) geprüft und durch AND verknüpft werden.

Positive Bedingungen verwenden

Das Datenbanksystem unterstützt nur solche Bedingungen durch einen Index, die den Suchwert positiv beschreiben, wie z.B. EQ oder LIKE. Bedingungen, die dagegen mit NE oder NOT LIKE angegeben sind, werden nicht unterstützt.

In Bedingungen sollte wenn möglich nicht das logische NOT, sondern entsprechend invertierte Operatoren verwendet werden, da das logische NOT nicht durch Datenbankindizes unterstützt wird.

Verwendung von OR

Der Optimizer hört in der Regel auf zu optimieren, wenn in der Bedingung eine Verknüpfung durch OR auftritt, d.h. er verwertet die mit OR geprüften Spalten nicht mehr bei der Auswahl und Anwendung des Indexes. Eine Ausnahme bilden die ORs, die ganz außen stehen. Deshalb sollte eine Bedingung, die eine OR-Verknüpfung auf einer für die Indexwahl relevanten Spalte besitzt, z.B. in eine IN-Bedingung umformuliert werden.

Verwendung eines Teils eines Index

Wenn ein Index aus mehreren Spalten zusammengesetzt ist, kann das Datenbanksystem ihn auch verwenden, wenn nur einige dieser Spalten in einer Bedingung angegeben sind. Allerdings spielt die Reihenfolge der im Index angegebenen Spalten eine wichtige Rolle. Eine Spalte kann im allgemeinen nur dann verwendet werden, wenn alle vor ihr in der Indexdefinition liegenden Spalten vollständig in der Bedingung angegeben sind.

Null-Wert prüfen

Bei der Bedingung IS NULL kann es zu Problemen kommen. Der Null-Wert wird bei einigen Datenbanksystemen nicht in der Indexstruktur abgelegt, was zur Folge haben kann, daß der Index für dieses Feld nicht verwendet wird.

Keine komplexen Bedingungen

Bedingungen sollten nicht zu komplex sein, da die entsprechenden Anweisungen vom Datenbanksystem in mehrere Einzelanweisungen zerlegt werden müssen.

Vergleichbare Themen

4
Antw.
9751
Views
Interne Tabellen zusammenführen
von Basler84 » 01.08.2018 16:49 • Verfasst in ABAP® für Anfänger
1
Antw.
2398
Views
Tabellen/Strukturen zusammenführen
von m4rkusr » 19.10.2006 08:00 • Verfasst in ABAP® Core
2
Antw.
15364
Views
Zwei interne Tabellen zusammenführen
von _Manfred_ » 28.04.2005 13:57 • Verfasst in ABAP® für Anfänger
10
Antw.
9006
Views
zwei interne Tabellen zusammenführen => ALV
von Mark33 » 22.08.2012 07:00 • Verfasst in ABAP® für Anfänger
9
Antw.
2782
Views
Durchlaufen zweier Tabellen
von Spookykid » 11.04.2011 11:22 • Verfasst in ABAP® für Anfänger

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
vor 2 Tagen von Bright4.5 1 / 620
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2248
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8837