Sekundärindex zieht nicht

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

Sekundärindex zieht nicht

Beitrag von ralf.wenzel (Top Expert / 3924 / 200 / 280 ) »
Hi,

wir haben einen Sekundärindex auf der MARA liegen, die das Feld NORMT betrifft.

Scheinbar wird der von den vorhandenen Matchcodes gezogen, von meinem Programm aber nicht. Soweit ich weiß, muss man beim Datenbankzugriff nicht sagen "nimm den Sekundärindex", sondern das entscheidet der Datenbankoptimizier.

Die Laufzeit des entsprechenden Programmes, das das Feld NORMT in der WHERE-Bedingung des MARA-Selects hat, ist grauenvoll (es steht NUR das Feld NORMT in der WHERE-Bedingung, das ist auch explizit so gewollt).


Ralf *hilflos in die Runde guckt
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

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


Re: Sekundärindex zieht nicht

Beitrag von JHM (Top Expert / 1197 / 1 / 197 ) »
ralf.wenzel hat geschrieben: Soweit ich weiß, muss man beim Datenbankzugriff nicht sagen "nimm den Sekundärindex", sondern das entscheidet der Datenbankoptimizier.
Der Datenbankoptimizier braucht manchmal ein Schubs in die richtige Richtung. Da kann man mit Open SQL-Hints arbeiten. Man kann dort zwar einen Index vordern, ist aber nicht unbedingt nötig, es gibt noch andere Möglichkeiten.

Ein Einstieg in Open SQL-Hints bringt Hinweis 129385.
Das Problem an den SQL-Hints ist, dass sie Datenbank spezifisch sind
Gruß Hendrik

Re: Sekundärindex zieht nicht

Beitrag von Frank Dittrich (Expert / 674 / 0 / 15 ) »
ralf.wenzel hat geschrieben:Die Laufzeit des entsprechenden Programmes, das das Feld NORMT in der WHERE-Bedingung des MARA-Selects hat, ist grauenvoll (es steht NUR das Feld NORMT in der WHERE-Bedingung, das ist auch explizit so gewollt).
Das ist aber schon seit Jahren Unsinn.
Früher war es mal nötig, den Optimizer auszutricksen, als Oracle in Kombination mit SAP R/3 noch so konfiguriert war, dass statt des Cost Based Optimizers der Rule Based Optimizer verwendet wurde.

Wie sieht das SELECT-Statement genau aus?
Wie ist der Index genau definiert, wie viele Einträge hat die MARA? Wie viele verschiedene Werte für NORMT (bzw. für die Kombination von Feldern des Sekundärindex) gibt es in der MARA?
Wann wurde die Statistik zuletzt aktualisiert?
Was sagt Oracle bezüglich Selektivität des Sekundärindex?

Fragen über Fragen.
Ohne ein paar mehr Infos kann man nur im Nebel stochern.
Wenn der Matchcode-Zugriff im Gegensatz zu Deinem Programm effizient ist, musst Du noch irgendetwas falsch machen.

Re: Sekundärindex zieht nicht

Beitrag von ralf.wenzel (Top Expert / 3924 / 200 / 280 ) »
Frank Dittrich hat geschrieben:Das ist aber schon seit Jahren Unsinn.
Was genau ist Unsinn an der von dir zitierten Aussage?

Früher war es mal nötig, den Optimizer auszutricksen, als Oracle in Kombination mit SAP R/3 noch so konfiguriert war, dass statt des Cost Based Optimizers der Rule Based Optimizer verwendet wurde.
Frank Dittrich hat geschrieben:Wie sieht das SELECT-Statement genau aus?
Wie ist der Index genau definiert, wie viele Einträge hat die MARA? Wie viele verschiedene Werte für NORMT (bzw. für die Kombination von Feldern des Sekundärindex) gibt es in der MARA?
Wann wurde die Statistik zuletzt aktualisiert?
Was sagt Oracle bezüglich Selektivität des Sekundärindex?
Weia, du kannst Fragen stellen. Ich muss wohl mal die Datenbankexperten an das Thema schmeißen...
Frank Dittrich hat geschrieben:Wenn der Matchcode-Zugriff im Gegensatz zu Deinem Programm effizient ist, musst Du noch irgendetwas falsch machen.
Nein, das Programm ist ineffizient, nicht der Matchcode-Zugriff.

Folgefrage: Ist es richtig, dass ich KEINE besonderen Vorkehrungen im Programm treffen muss um einen bestimmten Index zu wählen, sondern dass automatisch anhand der zu selektierenden Daten der Index automatisch ausgewählt wird?


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Sekundärindex zieht nicht

Beitrag von Frank Dittrich (Expert / 674 / 0 / 15 ) »
ralf.wenzel hat geschrieben:
Frank Dittrich hat geschrieben:Das ist aber schon seit Jahren Unsinn.
Was genau ist Unsinn an der von dir zitierten Aussage?
An der hoffentlich gar nichts.
Unsinn ist in den meisten Fällen, nur einen Teil der bekannten Einschränkungen in der WHERE-Klausel anzugeben und den Rest dann im ABAP-Programm per CHECK ... zu prüfen.
Und genau so habe ich
es steht NUR das Feld NORMT in der WHERE-Bedingung, das ist auch explizit so gewollt
verstanden.
Früher war es mal nötig, den Optimizer auszutricksen, als Oracle in Kombination mit SAP R/3 noch so konfiguriert war, dass statt des Cost Based Optimizers der Rule Based Optimizer verwendet wurde.
Irgendwie ist Dein Quoting durcheinandergeraten.
Das war meine Aussage, trifft aber ziemlich sicher kaum für Dein Problem zu. Oder was wolltest Du mir damit sagen?
Frank Dittrich hat geschrieben:Wie sieht das SELECT-Statement genau aus?
Wie ist der Index genau definiert, wie viele Einträge hat die MARA? Wie viele verschiedene Werte für NORMT (bzw. für die Kombination von Feldern des Sekundärindex) gibt es in der MARA?
Wann wurde die Statistik zuletzt aktualisiert?
Was sagt Oracle bezüglich Selektivität des Sekundärindex?
Weia, du kannst Fragen stellen. Ich muss wohl mal die Datenbankexperten an das Thema schmeißen...
Wie viele verschiedene Werte für NORMT es ungefähr gibt, wirst Du ja hoffentlich wissen, wenn Du einen Sekundärindex anlegst.
Ebenso, wie der Sekundärindex denn nun definiert ist.
Wie viele Einträge die Tabelle hat, sollte auch leicht zu ermitteln sein.
Den Rest der nötigen Informationen findet man über die ST05.
Frank Dittrich hat geschrieben:Wenn der Matchcode-Zugriff im Gegensatz zu Deinem Programm effizient ist, musst Du noch irgendetwas falsch machen.
Nein, das Programm ist ineffizient, nicht der Matchcode-Zugriff.
Genau das habe ich doch gesagt.
Folgefrage: Ist es richtig, dass ich KEINE besonderen Vorkehrungen im Programm treffen muss um einen bestimmten Index zu wählen, sondern dass automatisch anhand der zu selektierenden Daten der Index automatisch ausgewählt wird?
Normalerweise findet der DB-Oprtimizer den günstigsten Zugriffspfad (Voraussetzung: DB-Statistik halbwegs aktuell ...).

Per %_HINTS der DB etwas anderes vorschreiben zu wollen bringt oft nicht viel.
Es ist nicht so leicht, smarter als der DB-Optimizer zu sein.
Und spätestens wenn in dem SELECT SELECT-OPTIONS vorkommen, die der User füllt, hat man sowieso kaum noch eine Chance, den besten Zugriffspfad zu erraten.

Frank

Seite 1 von 1

Vergleichbare Themen

1
Antw.
4559
Views
ALV : Refresh zieht nicht richtig
von Jochen » 28.07.2005 15:10 • Verfasst in ABAP Objects®
0
Antw.
1280
Views
5
Antw.
5563
Views
Eigene BAdI-Implementierung zieht nicht?
von Frog » 03.04.2008 14:21 • Verfasst in ABAP Objects®
6
Antw.
7908
Views
GUI-Status Übersetzung (SE63) zieht nicht
von Thomas R. » 12.05.2015 17:12 • Verfasst in Dialogprogrammierung
3
Antw.
1933
Views
Breakpoint EXIT_RFFOEXIT_001 zieht nicht - Include ZXFORU01
von Blueshape » 17.08.2005 10:39 • 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.

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
Gestern von Bright4.5 1 / 515
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2149
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8744