Bei solchen Performance-Problemen auf der Datenbank würde ich mal VisualExplain versuchen. Dort sehe ich dann, welche Zugriffspfade, Indizees, Hashtabellen ggf. anzulegen sind.

Über den OpsNav (@Dieter, ja ich weiß) kann man auch statische Hashtabellen für einzelne Felder hinterlegen um auch nach dem nächsten IPL die Zugriffswege zu erhalten.

Ich muss immer wieder feststellen, dass beim Thema SQL-Zugriffe die Zugriffspfade (Indizees) stark vernachlässigt werden.
Bei Join's als auch Subselects werden häufig mehrere Millionen Zugriffe generiert, obwohl die Tabellen gerade mal ein paar Tausend Sätze aufweist.

Durch intelligente Verwendung des WITH-Selects konnte ich die Zugriffe aber so drastisch beschleunigen, dass e.g. eine Query-Liste, die vorher ca. 2 Stunden lief, nur noch 3 Minuten benötigt !!!