Welcher Indize wird genommen?

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

Welcher Indize wird genommen?

Beitrag von dimes (Specialist / 146 / 0 / 0 ) »
Hallo Leute,

Ich selektiere mit 4 Select-options auf die Tabelle VBAK. Meistens wird die Selection nur über das Feld S_ERDAT eingeschränkt. Jetzt hab ich festgestellt das das selektieren sehr lange dauert. Ich wollte jetzt wissen welchen Indizes er bei diesem Select nimmt...
Bei der VBAK haben wir 3:
0 Primary key
AUD Index zum Auftragsdatum
ERD Index auf das Erfassungsdatum des Auftrags

Wenn ich mit der ST05 (Trace Request) den SQL Zugriff festhalte und auswerte dann haben ich unter dem Punkt "DDIC INFO" die Angabe das er den Indizes 0 nimmt!?!? (Unique = X). Ich bin mir sicher das man noch irgendwo sehen kann wie dieses Select detailliert angezeigt wird und auch der ausgewählte Indizes angezeigt wird, finde das aber nicht... Ich stell hier mal meine Code rein und würd mich freuen wenn ihr das bei euch ausprobieren könnten und mir dann sagen könntet warum das so lange dauert und welchen Indizes er nimmt...

Code: Alles auswählen.

RANGES: S_AVBELN FOR VBAK-VBELN,
        S_ERDAT  FOR VBAK-ERDAT,
        S_ERZET  FOR VBAK-ERZET,
        S_VKORG  FOR VBAK-VKORG.


DATA: BEGIN OF AUFT_LINE,
        VBELN TYPE VBAK-VBELN,
      END OF AUFT_LINE,
      AUFT_TAB LIKE TABLE OF AUFT_LINE.


S_ERDAT-SIGN = 'I'.
S_ERDAT-OPTION = 'BT'.
S_ERDAT-LOW = '20061220'.
S_ERDAT-HIGH = '20070101'.

APPEND S_ERDAT.

    SELECT VBELN
      INTO TABLE AUFT_TAB
      FROM VBAK
     WHERE
       "  VBELN IN S_AVBELN
       "AND
           ERDAT IN S_ERDAT
       AND ERZET IN S_ERZET
       AND VKORG IN S_VKORG.

LOOP AT AUFT_TAB INTO AUFT_LINE.
WRITE: / AUFT_LINE-VBELN.
ENDLOOP.
PS: Ich bin mir sicher das man bei ABAP beim Select noch irgendwie einen Indize mitgeben kann? Glaub bei Native SQL!??? (Haben Oracle 9.2.0.8.0)
Weiß das jemand?

Danke und Gruß
Dimes

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


Beitrag von ralle (ForumUser / 49 / 0 / 0 ) »
Bei der ST04 wärst du richtig gewesen.
->Detail analysis menue
->SQL request
->Muster für SQL-Anweisungen mit *deiner Tabelle* + F8
->dann musst du dich weiter selbst durchhangeln

Mit folgender Syntax kannst du der Datenbank deinen Index aufzwingen.

Beispiel:
SELECT kokrs belnr bldat cpudt usnam
FROM cobk
INTO (cobk-kokrs, cobk-belnr, cobk-bldat,
cobk-cpudt, cobk-usnam)
WHERE kokrs IN s_kokrs AND
budat IN s_budat AND
bldat IN r_lper.
%_HINTS ORACLE 'INDEX("&TABLE&" "COBK~ZDA")'.
ZDA steht für den Namen deines Index

Nur Vorsicht! In der Regel ist die Entscheidung des CostBasedOptimizers die richtige.

Gruß
Ralle

Seite 1 von 1

Vergleichbare Themen

6
Antw.
1368
Views
Auf dem Testsystem wird die alte Methode genommen
von kaim77 » 16.01.2014 10:31 • Verfasst in ABAP® Core

Ü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.