Holas, no e trabajado con firebird.
Pero te comento que tube el mismo problema con interbase, tenia una vista donde hacia una union de 12 tablas y estas eran grandes.
"Se supone que la siguiente linea tenia que ser veloz", pero no!!!!
Código:
select * from vista01 where codigo_art='100203'
ya que esta consulta me arrojaba 12 registros (demoraba casi 6 segundos)
No estoy seguro pero creo que el servidor primero contruye la vista y luego recien hace la selecion y envia los datos al cliente.
Con muchos dolores de cabeza averigue que era mejor un procedure que reciba los parametros para el where y este procedure contruia el selec con la condicion dada.(ya sabes con el for select.....where....into), y mejoro la consulta:
Código:
select * from procedure('100203')
Zasss, en un parpadeo de ojos ;-)
Your friend
StartKill
Lima-Perú