[Oracle] Statement für Datenzeile mit Max-Wert

peter1502

Grünschnabel
Hallo,
ich habe ein Statement:
SELECT odc1.* FROM relODCEvent odc1 WHERE odc1.EventID IN
(
SELECT MAX(odc2.EventID)
FROM relODCEvent odc2
WHERE
odc2.PersonNr = '272' AND odc2.RNr = 10134 AND odc2.Trac=24
);

In der Unterabfrage hole ich die Größte Eventid für die Auswahl PersonNr, RNr, Trac
, mit dieser hole ich alle Daten aus dem Satz.

Problem:
In der Unterabfrage gibt es ca. 10000 DS, diese sind aber Zeitlich sehr verteilt, so daß das DB-System aus vielen Tabellenblöcken Daten holen muß, und deshalb das Laden zu lange dauert.

Kann ich in der Unterabfrage den Max-Wert holen, ohne daß das System dazu alle Datensätze lesen muß ?

Gruß

Peter Brosi
 
möglich wär das mit einem Index auf relODCEvent(PersonNr, RNr, Trac, EventID). Sonst fällt mir auf Anhieb keine Möglichkeit ein.

Gruß

MPr
 
Danke,

das war die Lösung.

Ich habe eigentlich geglaubt, daß ich diesen Index mal gesetzt habe, und es nicht ging.
Habe aber nach deinem Beitrag das noch mal gemacht und es hat funktioniert.
DA habe ich wohl beim ersten mal was anders gemacht.

Auf alle Fälle vielen Dank

Peter Brosi :p:p:p
 

Neue Beiträge

Zurück