01.02.2013 Views

Publishing Reports to the Web - Downloads - Oracle

Publishing Reports to the Web - Downloads - Oracle

Publishing Reports to the Web - Downloads - Oracle

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Note: The only meaningful place <strong>to</strong> use <strong>the</strong> SRW.SET_MAXROW()<br />

built-in procedure is in <strong>the</strong> Before_Report trigger (after <strong>the</strong> query has<br />

been parsed). Calling <strong>the</strong> SRW.SET_MAXROW() built-in procedure<br />

after this point raises <strong>the</strong> SRW.MAXROW_UNSET built-in exception.<br />

The query will still be parsed and bound, but no data will be<br />

returned <strong>to</strong> <strong>the</strong> report.<br />

Methodology<br />

You can define a query based ei<strong>the</strong>r on an XML or a Text pluggable data source by<br />

selecting <strong>the</strong> fields <strong>to</strong> be used in <strong>the</strong> query (i.e., all available fields or a subset). If you<br />

must use a subset of <strong>the</strong> fields, do so at <strong>the</strong> query level using parameters, as opposed<br />

<strong>to</strong> fetching all <strong>the</strong> values and filtering <strong>the</strong>m using a group filter or layout level format<br />

triggers.<br />

20.1.2.5 Break Groups<br />

Limit <strong>the</strong> number of break groups <strong>to</strong> improve your report’s performance. <strong>Oracle</strong><br />

<strong>Reports</strong> sets <strong>the</strong> break level for each column in <strong>the</strong> data model that has <strong>the</strong> break order<br />

property set except <strong>the</strong> lowest child group.<br />

For a SQL query, <strong>Oracle</strong> <strong>Reports</strong> appends this as an extra column <strong>to</strong> <strong>the</strong> ORDER BY<br />

clause in <strong>the</strong> query. The fewer columns in <strong>the</strong> ORDER BY clause, <strong>the</strong> lesser <strong>the</strong> work<br />

<strong>the</strong> database has <strong>to</strong> do before returning <strong>the</strong> data in <strong>the</strong> required order. Creating a break<br />

group may render an ORDER BY clause redundant inspite of defining it as part of <strong>the</strong><br />

query. Remove any such ORDER BY clauses as it requires extra processing by <strong>the</strong><br />

database.<br />

If your report requires <strong>the</strong> use of break groups, set <strong>the</strong> break order property for as few<br />

columns as possible. A break order column is indicated by a small arrow <strong>to</strong> <strong>the</strong> left of<br />

<strong>the</strong> column name in <strong>the</strong> group in <strong>the</strong> <strong>Reports</strong> Builder Data Model view. Each break group<br />

above <strong>the</strong> lowest child group of a query requires at least one column <strong>to</strong> have <strong>the</strong> break<br />

order property set. Removing <strong>the</strong> break order from columns where sorting is not<br />

required increases performance.<br />

Limit break groups <strong>to</strong> a single column whenever possible. These columns should be as<br />

small as possible and be database columns (as opposed <strong>to</strong> summary or formula<br />

columns) wherever feasible. Both conditions help <strong>the</strong> local caching that <strong>Oracle</strong> <strong>Reports</strong><br />

does, before <strong>the</strong> data is formatted for maximum efficiency. Clearly, <strong>the</strong>se conditions<br />

cannot always be met but can increase efficiency whenever utilized.<br />

20.1.2.6 Group Filters<br />

Group filters reduces <strong>the</strong> number of records retrieved from <strong>the</strong> data source. Filtering<br />

takes place after <strong>the</strong> query returns <strong>the</strong> data (from <strong>the</strong> data source) <strong>to</strong> <strong>Reports</strong> Builder.<br />

Even if <strong>the</strong> filter is defined <strong>to</strong> display only <strong>the</strong> <strong>to</strong>p five records, <strong>the</strong> result set returned<br />

<strong>to</strong> reports will contain all <strong>the</strong> records returned by <strong>the</strong> query. Hence, it is more efficient<br />

<strong>to</strong> incorporate <strong>the</strong> group filter functionality in<strong>to</strong> <strong>the</strong> query’s WHERE clause or in<strong>to</strong> <strong>the</strong><br />

maximum rows property, whenever possible. This restricts <strong>the</strong> data returned by <strong>the</strong><br />

database.<br />

20.1.2.7 To Link or not <strong>to</strong> Link<br />

There are a number of ways <strong>to</strong> create data models that include more than one table.<br />

Consider <strong>the</strong> standard case of <strong>the</strong> dept/emp join, with <strong>the</strong> requirement <strong>to</strong> create a<br />

report that lists all <strong>the</strong> employees in each department in <strong>the</strong> company. You can create<br />

ei<strong>the</strong>r of <strong>the</strong> following:<br />

■ Single query<br />

Tuning <strong>Oracle</strong> <strong>Reports</strong> 20-11

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!