Skip to Main Content

APEX

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Interactive reports performance

joelanierApr 22 2013 — edited Apr 23 2013
I am at Apex 4.1, and have been using InterActive (I/R) reports for quite awhile. I try to use them as much as possible to give my users as much flexibility as possible.
Performance has always been an issue, perhaps I someone can explain if theres something I am doing wrong. Perhaps there is an article on I/R reports, how the database query and I/R filtering work together.

For discussion, lets say the report is based on a single table, called Billing, which has 600k rows.
The report has its maximum rows parameter set to 100k.
Lets say the user enters a customer_name = 'ABC', which should result in 20 rows.
If I am understanding correctly, APEX accomplishes this in two steps. 1) starts reading the 600k row table bringing all 600k back to page, then 2) applies the I/R filter to display the final 20 rows.
I believe (using traces and/or debug), this looks like a sub-select:
select * from (600 k rows from step1) where user I/R filters are true.

Questions:
1) Am I correct that the 100k row limit gets applied after step2?
2) Is there some way to apply the I/R filters at the database level, and not return the 600k rows back 1st?
3) once the 20 rows are displayed, if the user leaves the page and returns, it appears to repeat step 1 and 2 again, instead of just displaying the 20 rows, because it is very slow again.

I have used collections with I/R reports, but not in cases like this where the initial results from step 1 is over 100k rows. Is there a way to store the final 20 rows in a collection?
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on May 21 2013
Added on Apr 22 2013
8 comments
1,917 views