It gets the whole set of results for applying filters.
You should improve MY_PIPLINED_FUNCTION. It probably uses indexes now, and because of this, first_rows comes quickly.
1. You can try to force it to use the hash for joins (this can get a complete set of results in less time, but the first lines will not come quickly)
2. You can change the function and put the condition in the arguments of the function, changing the function, therefore, - filter the rows from a particular table. (IE instead
select e.* from table(MY_PIPLINED_FUNCTION)e where e.name = 'mark'
to do
select e.* from table(MY_PIPLINED_FUNCTION('mark'))e
)
These things can help ...
source share