Die schnellste Variante mit SQL ist:

Code:
/Free
 clear MyVar;
 Exec SQL Select 1 into :MyVar
             From SysIbm/SysDummy1
             where exists (Select 1 
                              from ... inner join ...
                                   ... inner join ...
                                   ... inner join ...);
Etwas langsamger ist:
Code:
/Free
 Clear MyVar;
 Exec SQL Select 1 into :MyVar
             from ... inner join ...
                  ... inner join ...
                  ... inner join ...
             Fetch first row only;
Alles andere kannst Du vergessen.
Beide Methoden müssen aber immer noch langsamer sein als mehrere Chains oder SetLLs nacheinander auszuführen.

Ich vermute, Du hast Optimize for X Rows mit Fetch X Rows only verwechselt.

Optimize for X Rows ist das Optimierungsziel. Ist x eine kleine Zahl wird so optimiert, dass der 1. Block an Daten möglichst schnell zurückkommt. Bei einer sehr großen Zahl wird so optimiert, dass das Gesamt-Ergebnis möglichst schnell ermittelt wird. Ausschlag hat diese Angabe eigentlich nur, wenn der Optimizer überlegt ob Index-Access oder Table Scan.

Bei Select ... Into und Set mit Select-Statement muss sichergestellt werden, dass entweder genau 1 oder kein Datensatz zurückgegeben wird. Werden mehrere Datensätze zurückgegeben, wird ein negativer SQL code ausgegeben werden.

Birgitta