Driving tables are for use in optimizing the manner in which the Oracle BI Server processes cross-database joins when one table is very small and the other table is very large.
The BI Server will query the driving table (the small one) and will get a list of values. The BI Server will then generate a second SQL using a parameterized IN list with the values from the first query.
Specifying driving tables leads to query optimization only when the number of rows being selected from the driving table is much smaller than the number of rows in the table to which it is being joined.
To avoid problems, only specify driving tables when the driving table is extremely small less than 1000 rows.
When you specify a driving table, the Oracle BI Server will use it if the query plan determines that its use will optimize query processing.
Join Process with a driving table
The small table (the driving table) is scanned, and parameterized queries are issued to the large table to select matching rows. The other tables, including other driving tables, are then joined together.
If large numbers of rows are being selected from the driving table, specifying a driving table could lead to significant performance degradation. You can control this behaviour by setting the configuration_parameters.
In general, driving tables can be used with inner joins, and for outer joins when the driving table is the left table for a left outer join, or the right table for a right outer join. Driving tables are not used for full outer joins.
There are two entries in the database features table that control and tune driving table performance.
This is a performance tuning parameter. If the MAX_QUERIES_PER_DRIVE_JOIN limit is exceeded, the query terminates. In general, the larger its value, the fewer parameterized queries that will need to be generated. Values that are too large can result in parameterized queries that fail due to back-end database limitations. Setting the value to 0 (zero) turns off drive table joins.
This is used to prevent runaway drive table joins. If the number of parameterized queries exceeds its value, the query is terminated and an error message is returned to the user.