Question: I'm trying to tune my Discoverer, and I
need some information about the general tuning techniques for Discoverer
reports. What to do to speed up a Discoverer report that is based on a
complex custom folder? What to do to speed up a Discoverer report that is
based on a complex custom folder? Can you provide general guidelines for
tuning Oracle Discoverer?
Answer: (By Michael Armstrong-Smith, Oracle
Discoverer book author)
>>Is there any impact on the performance of Discoverer
reports if the Business Area consists of more than 10 with complex joins between
them?
I'm assuming you mean more than ten custom SQL folders with joins between them?
I have done exhaustive testing comparing the performance of Discoverer when
using custom folders and when using database views.
Given the same code, custom folders and database views
perform the same, which is what I would expect because the underlying SQL that
is being submitted to the database is the same.
The big disadvantage with a custom SQL folder is that you
cannot tune or optimize the code as you can with a view. Having 10 of these by
itself is not not the cause for alarm, the issue lies with the complexity of the
SQL code itself.
However, having 10 of these interconnected to each other
would be the cause for concern. Just imagine having 10 complex views all joined
together inside a single SQL statement.
>> What to do to speed up a Discoverer report that is based on a complex
custom folder?
When I am having trouble with a custom folder the first thing I do is to switch
it to being a database view. I can then work with it directly in SQL to see if
there is anything I can do to rewrite the code or optimize it to make it more
efficient.
Frequently adding a new index to a table that is being used
in the code does the trick. If this doesn't work, which is sometimes the case,
then I look to creating a materialized view. With a materialized view, or just a
table if you are not comfortable working with materialized views, I can pre-run
the query, I can use partitions and I can use indexes, all of which will improve
performance.