ich bin hier grad wieder an so nem Massendatenverarbeitungsmegaalleskönnerreport...
Wobei das genauso ausichtslos erscheint, wie mein damaliges Problem im SD Umfeld...aber zum Thema....
Ich lese eine Datenbanktabelle (inhalt > 360mio Einträge) mit verschiedenen Where bedingungen.
Von diesen Bedingungen sind 3 stück in einem sekundär index (wobei dieser 4 Felder beinhaltet...mir fehlt eben das letzte der 4 Felder).
Den Report lasse ich als Hintergrundjob laufen, da er sehr lange braucht.(was auch das eigentliche Problem ist)
Wenn ich nun in der SM50 mein Job anschauen...dann steht da eben das er sequentiell liest...
Das heist doch das er die Datenbank von oben nach unten durchliest? Wieso macht er das, wenn er doch eigentlich mit Index lesen sollte.
Was ist eigentlich genau der unterschied zwischen sequentielles lesen und direktes lesen im SAP Bereich???
Wo kann die Performance verloren gehen, wenn ich eigentlich mit Index lese? (Habe bei der Select anweisung mit dem %_hint Befehl dem Select mitgeteilt, welchen index er nutzen soll)
Achja...
ich rufe diesen Select 2mal auf ...nacheinander.
Grob gesagt suche ich zuerst alle Sätze mit 1 und grün.
und dann suche ich alle Sätze mit 2 und Rot.
Das kann ich kaum in ein einzelnen Select zusammenbringen oder?
ob direkt oder sequentiell gelesen wird, hat nichts mit der Nutzung eines Index zu tun; ein Index ist ja auch nur eine Tabelle bzw. eine sortierte Lste, die, wenn mehrere Sätze gelesen werden sollen, sequentiell abgearbeitet werden muß.
Direktes Lesen geht nur entweder mit SELECT * SINGLE mit voll qualifiziertem Schlüssel oder mit SELECT * UP TO 1 ROWS, letzteres aber nur, wenn kein ORDER BY verwendet wird, denn dabei werden zunächst alle Sätze gelesen, die die Bedingung(en) erfüllen, dann sortiert und dann der erste Satz zurückgeben.
Anders ausgedrückt, direkt gelesen wird nur dann, wenn das Ergebnis genau ein Datensatz ist. Wenn Du z.B. die MARA mit SELECT ... ENDSELECT durchläufst und zu jeder Materialnummer mit SELECT * SINGLE den Materialtext holst, erfolgt das Lesen der MARA sequentiell und das Lesen der MAKT direkt.