The static query optimizer considers the fast range counts of the different access paths which could be used by the plan and reorganizes the query plan in order to minimize the expected cardinality based on the fast range counts and some heuristics, e.g., concerning the propagation of variable bindings. The static query optimize does not have information about the "as-bound" cardinality of the access paths and will sometimes get the wrong join ordering as a result. This can result in a more expensive query plan. Sometimes these issues can be addressed by adding new heuristics to the static query optimizer. However, you can also disable the static query optimizer using a query hint and reorder the joins by hand into a known good order.