Wenn Du eine schnelle Lösung hast, wo ist das Problem?
Gibt es optimizer hints in ADS?
Ansonsten könnte man die Inner Joins zu einer Verschachtelung umbauen. Innen hohe Einschränkung, außen den Rest oder so..
Stichwort wäre mal wieder die "Selektivität".
Ein Index auf einem Feld, dass nur 2 unterschiedliche Werte, aber Millionen Vorkommen hat ist eigentlich nutzlos. Wenn also formal alles da ist, was die
Query braucht, bedeutet das nicht gleich Lichtgeschwindigkeit in der Abfrage.
Falls der Optimizer sowas nicht erkennt, kann das auch an fehlenden oder veralteten Statistiken liegen. Ich weiß aber nicht, wie der bei ADS arbeitet, also ob der Optimizer in der Version überhaupt mit Statistiken arbeitet.
Bspw. unter Oracle 8 gab es den Rule Based Optimizer, der die Ausführungsreihenfolge am Aufbau der Abfrage ausgerichtet hat (From Clause, Where Clause). Da musste man im Zweifel immer selber dran denken, wieviel Daten in welcher Tabelle sind bzw. dann als Abfrageergebnis rauskommen. Vlt ist das hier auch so.