Datenbank-Index

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

Datenbank-Index

Beitrag von Charadin (Specialist / 148 / 0 / 0 ) »
Hallo zusammen,

wie kann man denn rausbekommen, ob bei einer DB-Tabellen-Abfrage ein Index benutzt wird? Hab' mal wieder das Problem, das ein Report viel zu lange braucht und ich möchte nun wissen, ob bei der Abfrage überhaupt auf einen Index zugegriffen wird.

Und gibt es Dinge, die man beachten sollte, damit der Index auch wirklich genutzt wird? So z.B. wie "NOT-Abfragen vermeiden" oder ähnliches...
Gruß,
Charadin


Beitrag von DeathGuardian (Expert / 759 / 0 / 2 ) »
Transaktion ST05 !
Damit kannst genau schauen welche wege er bei den Select geht.

Beitrag von poldi (Specialist / 116 / 0 / 0 ) »
Hallo Charadin,

ich zitiere mal aus dem Buch "ABAP Objects":

"Geben Sie in der WHERE-Klausel wenn möglich für alle Felder des Index logische Vergleiche mit dem Gleichheitsoperator (=) an, die mit AND verknüpft sind. Verwenden Sie in der WHERE-Klausel für die Indexfelder nur positive Operatoren wie = statt <> und auch nicht das Sprachelement NOT, da diese nicht durch Indizes unterstützt werden. Wenn Sie nur einen Teil eines Index in der WHERE-Klausel angeben, spielt die Reihenfolge der Indexfelder eine wichtige Rolle. Ein Indexfeld in einer WHERE-Klausel führt im Allgemeinen nur dann zur Auswertung des Index, wenn alle vor ihm in der Indexdefinition liegenden Felder vollständig in der WHERE-Bedingung angegeben sind. Bei der Auswahl und Anwendung eines Index verwertet das System in der Regel keine mit OR verknüpften Operanden, es sei denn, der Operator OR steht in der logischen Bedingung in der höchsten Ebene. Verwenden Sie also beispielsweise:
.. WHERE (CARRID = 'LH' AND CITYFROM = 'FRANKFURT') OR
(CARRID = 'LH' AND CITYFROM = 'NEW YORK'):
statt:
..WHERE carrid = 'LH' AND
(cityfrom = 'FRANKFURT' OR cityfrom = 'NEW YORK').

Fragen Sie keine Indexspalte mit der Bedingung IS NULL ab, da einige Datenbanken diese nicht für Indizes unterstützen.
Große Effizienzgewinne lassen sich erreichen, wenn alle Spalten einer SELECT-Klausel Teil eines Indizes sind, da dann nur der Index gelesen werden muss."

Viele Grüße
Wilfried
Wir sind lustig und haben es gar nicht nötig!

Beitrag von Charadin (Specialist / 148 / 0 / 0 ) »
Hallo DeathGuardian, hallo Wilfried,

vielen Dank für Eure Antworten, das hilft mir wirklich weiter! :)
Gruß,
Charadin

Seite 1 von 1

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und besseren Inhalt:

Vergleichbare Themen

Datenbank Index
von A6272 » 28.09.2020 13:45
FAQ Index
von Jan » 02.08.2005 08:08
Index in WHERE - Bedingung
von Gast » 13.10.2004 16:18
Index im where Teil
von kaim77 » 10.09.2014 08:54
Laufvariable / Index
von Lbyte » 27.10.2017 15:50