Look into using materialized views, possibly synchronously-updated
(a.k.a. "ON COMMIT") in addition to asynchronous (a.k.a. "ON DEMAND").|
Possibly it is a better solution to perform transformations/calculations when the data is updated rather than when it is queried. If the underlying data is very volatile and is updated frequently, then this could hurt, but your solution will start to fail if the number of queries from the view is greater than the number of updates to the underlying data, especially if that rate increases.
You can include PL/SQL functions in a WHERE clause using the TABLE() clause, as well -- this technique is pretty well documented in the standard documentation as well as MetaLink.
M. Alroy Mascrenghe wrote: