Zasto ne proveris koja su ti polja ne indexsirana, pa indexsiras?
A postoji i jedna zgodna naredba nisam jos stigla da je isprobam, ali su mogucnosti sa njom mnogo vece - moze da ti pomogne.
Code:
[for] execute statement <string> [into :param1 , ... , :paramn] [do]
Tako da mozes dinamicki sklopiti select statement npr.
Code:
sql = 'select ';
if (param is null) then
uslov = ' '
else
uslov = 'where ... ';
...
sql = sql || uslov;
execute statement sql /* u obliku koji ti treba */
Ovde imas detalje
http://www.destructor.de/firebird/1.5/execute_statement.txt