The Oracle rule-based optimizer has fifteen rules, ranked in order of efficiency, as shown
in Table 21.4. The optimizer can choose to use a particular access path for a table only if
the statement contains a predicate or other construct that makes that access path available.
The rule-based optimizer assigns a score to each execution strategy using these rankings
and then selects the execution strategy with the best (lowest) score. When two strategies
produce the same score, Oracle resolves this tie-break by making a decision based on the
order in which tables occur in the SQL statement, which would generally be regarded as
not a particularly good way to make the final decision.