HERE WE ARE USING HINT + FIRST_ROWS. WHEN WE "SET AUTOTRACE ON;" WE CAN SEE THE EXECUTION PLAN IS USING THIS HINT, AND THE RESULTS OF THE COST OF THE EXECUTION. "Optimizer=HINT: FIRST_ROWS".
WE CAN CHANGE THIS TO ANY OF THE VALUES BELOW, BE IT + CHOOSE, +RULE ETC (SEE BELOW)!:-
IF WE DO NOT PUT THIS HINT IN IT WILL USE THE DEFAULT FROM THE INITIALIZATION PARAMETER OPTIMIZER_MODE=.
SO HINTS ARE USED TO OVERIDE THIS INIT.ORA PARAMETER SETTI
OPTIMIZER_MODE establishes the default behavior for choosing an optimization approach for the instance.
Values:
rule
The optimizer chooses a rule-based approach for all SQL statements regardless of the presence of statistics.
choose
The optimizer chooses between a cost-based approach and a rule-based approach based on whether statistics are available.
If the data dictionary contains statistics for at least one of the accessed tables, then the optimizer uses a cost-based approach and optimizes with a goal of best throughput. If the data dictionary contains only some statistics, then the cost-based approach is used, and the optimizer must guess the statistics for the subjects without any statistics. This can result in sub-optimal execution plans. If the data dictionary contains no statistics for any of the accessed tables, then the optimizer uses a rule-based approach.
first_rows_n
The optimizer uses a cost-based approach, regardless of the presence of statistics, and optimizes with a goal of best response time to return the first n rows (where n = 1, 10, 100, 1000).
first_rows
The optimizer uses a mix of costs and heuristics to find a best plan for fast delivery of the first few rows.
all_rows
The optimizer uses a cost-based approach for all SQL statements in the session regardless of the presence of statistics and optimizes with a goal of best throughput (minimum resource use to complete the entire statement).
he Optimizers (Cost - Based and Rule - Based) may choose to use any index
available on a table if it can be used for a particular query and if the Access Path
this index offers makes it more desirable than other indexes or even accessing
the table directly.
A change in available statistics may influence the Optimizers and thus the choice
of a particular Access Path and hence a particular index.
So if the stats are not so clever (ie estimate not compute) or there are none at all, then CBO may choose
to do a full table scan instead!
We can use hints to overide the default CBO initialization setting.
Sy UK