Performance beim Lesen einer Datenbanktabelle

Getting started ... Alles für einen gelungenen Start.
6 Beiträge • Seite 1 von 1
6 Beiträge Seite 1 von 1

Performance beim Lesen einer Datenbanktabelle

Beitrag von pohlmann-schwarza (ForumUser / 91 / 0 / 0 ) »
Hallo zusammen

Ich möchte den Inhalt einer Excel-Tabelle mit dem Inhalt einer Datenbanktabelle abgleichen.
Ich Lese dafür Zeile für Zeile der externen Datei ein und suche die zutreffende Zeile in der Tabelle.
Ziel ist es anhand von einigen Spalten eine 1 zu 1 Beziehung zu finden.

Das Problem ist das ich keinen ?wirklichen? Schlüssel habe. Außerdem haben sich in der Excel-Tabelle unzählige Rechtschreibfehler eingeschlichen. Eine direkte Suche wird also nix.
Es gibt ein Feld welches immer Identisch sein muss, dies hat allerdings eine n zu m Beziehung.
Nun ist meine Idee, über dieses Feld die Zeichenkettenvergleiche zumindest einzugrenzen.

Ist es besser für diese Sache die komplette Datenbanktabelle erst in eine interne Tabelle zu laden und dann mittels LOOP WHERE die Komponenten zu suchen.
Oder würdet Ihr für jede Zeile der externen Datei einen neuen SELECT starten und dann nur die bestimmten Zeilen in eine interne Tabelle übertragen?

Viele Grüße
Michael

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


Beitrag von Matthias.Selle (ForumUser / 69 / 1 / 0 ) »
Hallo Michael,

leider schreibst Du nichts über die Größe der Datenbanktabelle. Ist sie groß im Vergleich zu der Excel-Tabelle (Faktor 100 oder größer)?

Falls nicht, würde ich immer die Tabelle komplett lesen und dann loopen.
Prüfe aber, ob Du alle Spalten brauchst!

Viele Grüße
Matthias

Beitrag von pohlmann-schwarza (ForumUser / 91 / 0 / 0 ) »
Die Datenbanktabelle ist in etwa 10 mal größer als die Excel Tabelle.

Werd wohl mit LOOP WHERE arbeiten...

Viele Grüße

Beitrag von TWP (Specialist / 445 / 0 / 1 ) »
Wieso mit LOOP WHERE?

Macht es nicht Sinn, beide Teile in 2 Interne Tabellen zu überführen, einen Loop über Tab1 und direktes lesen mit read Tab2 ... binary search.

Ggf. dann die Tabellen austauschen für die die noch nicht gefunden wurde.

Thomas

Beitrag von pohlmann-schwarza (ForumUser / 91 / 0 / 0 ) »
Dann würdest du die Suche in der internen Tabelle der Datenbanktabelle nicht eingrenzen. Damit steigt die Abarbeitungszeit stark an, da alle Zeilen der Tabelle durchsucht werden bis ein Eintrag gefunden wird.

Da kein direkter Vergleich auf Grund von Tippfehlern möglich ist, wird für jedes Feld eine Spezielle Vergleichsroutine durchlaufen.

Wenn ich die interne Tabelle der Datenbanktabelle mittels LOOP und einer WHERE Beziehung auf wenige mögliche Zuordnungen reduziere spar ich doch viel Rechenzeit.

Die Frage ist nur ob ich für jede Zeile der Excel Tabelle einen neuen SELECT WHERE mache oder eben die ganze Datenbanktabelle erst in eine interne Tabelle lade und dann wie oben beschrieben auslese.

Denke die LOOP WHERE Geschichte wird?s werden.

Größe der Datenbanktabelle: ca. 28000 Einträge
Größe der Excel-Datei: ca. 1600 Einträge

Viele Grüße
Michael

Beitrag von TWP (Specialist / 445 / 0 / 1 ) »
Lade doch die Felder der Datenbank, die für diesen Verglecih benötigt werden in eine interne Tabelle (TAB_DB) - sorted Table
Die Exceltabelle auch in eine interne Tabelle gestellt (TAB_EX) und nach den entsprechenden Schlüssel sortiert.

Loop über TAB_EX.
READ table TAB_DB .... Binary search.
endloop.

Somit ist dein Vergleich relativ zügig fertig, das das Bereitstellen deiner DB mittels FETCH läuft ist das recht effekltiv.

Besser als jeden Satz gegen die DB zu prüfen. Bei 28000 Datensätze ist dies auch durchaus vertretbar.

MfG

Thomas

Seite 1 von 1

Vergleichbare Themen

1
Antw.
1572
Views
Anzahl von Datensätzen aus einer Datenbanktabelle dynamisch lesen
von tekko » 31.03.2022 16:26 • Verfasst in ABAP Objects®
4
Antw.
2436
Views
Anzahl von Datensätzen aus einer Datenbanktabelle dynamisch lesen
von tekko » 31.03.2022 16:26 • Verfasst in ABAP Objects®
1
Antw.
7792
Views
Unterschied: Sequentielles lesen, direktes lesen
von MarkusW » 07.08.2008 16:46 • Verfasst in ABAP® für Anfänger
2
Antw.
2058
Views
SQL und Performance
von Hagbard » 24.11.2005 08:51 • Verfasst in ABAP® für Anfänger
3
Antw.
2150
Views
Performance
von schick » 29.03.2018 14:48 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


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

Aktuelle Forenbeiträge

Dialog-Container mit Toolbar/Status
vor 3 Stunden von DeathAndPain gelöst 20 / 2440
Zeilenumbrüche ersetzen
vor 23 Stunden von ralf.wenzel 6 / 223
SAP Trial Version für SAP Fiori
vor 2 Tagen von tar 2 / 1597

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.

Aktuelle Forenbeiträge

Dialog-Container mit Toolbar/Status
vor 3 Stunden von DeathAndPain gelöst 20 / 2440
Zeilenumbrüche ersetzen
vor 23 Stunden von ralf.wenzel 6 / 223
SAP Trial Version für SAP Fiori
vor 2 Tagen von tar 2 / 1597

Unbeantwortete Forenbeiträge

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