sorted table, hashed table: Übergabe Workarea -> Performa

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
2 Beiträge • Seite 1 von 1
2 Beiträge Seite 1 von 1

sorted table, hashed table: Übergabe Workarea -> Performa

Beitrag von Jürgen Fischer (ForumUser / 1 / 0 / 0 ) »
Hallo,

in der Anlage habe ich ein Beispielcoding angefügt in dem Ausschnitte aus dem betroffenen Programm enthalten sind. Das Select liefert eine sehr große interne Tabelle (ca. 1 Mio. Zeilen).

Fragen:

- Werden Hash-Tabellen oder Sorted-Tabellen
schneller durch die SQL-Abfrage gefüllt?
- Gibt es möglichkeiten die Performance der
Übergabe des Abfrageergebnisses zu erhönen?
- In Workarea WA_vorgang befindet sich eine Zeile.
Warum dauert die Übergabe eines Feldes dieser Zeile
in eine Hash-Tabelle extrem lange (obwohl ein
Schlüssel angegeben wurde), während die Übergabe
in die sorted-Table relativ schnell geht? Gibt es
Möglichkeiten die Übergabe des Feldes
wa_vorgang_objnr in die interne hash-tabelle zu
beschleunigen ?


Vielen Dank für Ihre Bemühungen

J. Fischer

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


Beitrag von Frank Münker (ForumUser / 16 / 0 / 0 ) »
Hallo Jürgen,

zu Deinen Fragen:

- hashed- und sorted-Tabellen werden LANGSAMER gefüllt, egal ob aus einer DB-Tabelle oder aus einer Work Area. Am schnellsten ist in jedem Fall ein SELECT ... FROM ... INTO TABLE (standard table).

Abhänigig von den Quelldaten können die Performance-Unterschiede dabei erheblich sein. Ist die Quell-Tabelle schon nach Schlüsseln vorsortiert, so sind die Unterschiede gering, wenn nicht, dann können locker mal 1000% zusammenkommen. In der Regel ist dabei der hashed table noch mal um einiges langsamer als der sorted. Dafür sind dann aber die Abfragen mit "READ TABLE ... WITH KEY ..." oder "LOOP AT ... WHERE ..." um Lichtjahre schneller als bei einer Standardtabelle. Bei kleinen Tabellen sieht man das fast nicht, aber die Unterschiede wachsen exponentiell mit der Tabellengröße, bei 1 Mio. Datensätze hat das auf jeden Fall riesige Auswirkungen.

Bedeutet: hashed table lohnt sich nur bei großen Tabellen, die selten modifiziert werden und sehr oft über Schlüssel-Zugriff (!) gelesen werden.

- Unter bestimmten Umständen kann es schneller sein, das Abfrageergebnis zuerst in einer Standardtabelle zu speichern und dann die Hashed Tabelle in einer LOOP einzelsatzweise zu füllen.

- Versuche mal Dein Modify so:
FIELD-SYMBOLS: <fs_vorgang> TYPE (wie wa_vorgang)

LOOP AT IT_VORGANG ASSIGNING <fs_vorgang>
WHERE AUFPL = ...

<fs_vorgang>-objnr = ...

ENDLOOP.

Aber Achtung: Du darfst auf diese Weise KEINE Schlüsselfelder modifizieren !!!

Hope that helps ... :-)
Frank

Seite 1 von 1

Vergleichbare Themen

5
Antw.
9476
Views
standard table vs. sorted table
von ralf.wenzel » 31.07.2014 12:49 • Verfasst in ABAP® Core
1
Antw.
1009
Views
Hashed Table als Dict-TYP
von RIG » 24.03.2017 10:19 • Verfasst in ABAP® für Anfänger
1
Antw.
1762
Views
Hashed Table und Objekte
von reichi » 10.12.2012 10:27 • Verfasst in ABAP Objects®
2
Antw.
3529
Views
HASHED TABLE-Befüllung
von cyb1982 » 06.09.2011 12:17 • Verfasst in ABAP® für Anfänger
44
Antw.
10203
Views
INTO CORRESPONDING FIELDS OF TABLE VS. INtO TABLE
von Bright4.5 » 07.12.2018 13:22 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

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

Zwischensumme Adobe Forms
vor 4 Tagen von Lucyalison 1 / 71
Group Items auf einer Filterbar
vor einer Woche von Bright4.5 1 / 111
tRFC Transaktionen SM58
vor 4 Wochen von A6272 1 / 141