SAP Jobsuche bei DV-Treff
msdd
  • msdd
  • SAP Forum - Neuling Thema Starter
vor 14 Jahre
Hallo,

ich habe in einer Tabelle für ein Feld ein Index(Sekundärindex). Dieses Feld ist ein Datum.
In einem SQL-Trace kann ich ersehen, ob der Index bei einer Abfrage genommen wird. Merkwürdiger weise wird bei Abfrage bis zu einem bestimmten Datum kein Index verwendet. Z.B. Selektion der Daten bis 10.02.2006. Selektionen ab 11.02.2006 wird der Index verwendet. Wie kann das?

Ausserdem habe ich keine Aussage dazu gefunden, ob in einem Sekundär-Index das Feld MANDT enthalten sein muss?

Übrigens: Das Buch Sap - Performanceoptimierung habe ich vor mir liegen.

Gruß msdd
ahelm
vor 14 Jahre
Hallo, der SQL Optimizer bestimmt anhand der Datenbankstatistiken den Zugriff über einen Index, ohne eine genaue Kenntnis der Datenbankstruktur und von den angelegten Indices ist es schwierig, dazu etwas zu sagen. Meine Erfahrung zeigt aber, dass der Optimizer den günstigsten Index in Normalfall trifft.

In einem Sekundärindex muss das Feld MANDT nicht enthalten sein, es kommt aber ganz darauf an, ob ihr mehrere Mandanten in einem System habt oder nicht. Implizit wird der Mandant in ABAP immer in den Datenbankselektionen mit abgefragt, wenn er nicht mit angegeben ist. Ist im System nur ein Mandant, ist es egal, ansonsten hängt es auch wieder davon ab, ob durch den Index die Treffermenge stärker eingeschränkt wird als durch den Primary Key, wo der Mandant üblicherweise als erstes Feld enthalten ist.

mfg Andreas
dweigelt
vor 14 Jahre
Hallo msdd,

schreibst Du bitte, mit welchem DB System/Release + SAP System/Release Du arbeitest ?

Gruß

Dirk