基于成本优化器的CHOOSE模式的学习
CHOOSE
仅在9i及之前版本中被支持,10g已经废除。8i及9i中为默认值。
这个值表示SQL语句既可以使用RBO优化器也可以使用CBO优化器,而决定该SQL到底使用哪个优化器的唯一因素是,所访问的对象是否存在统计信息。如果所访问的全部对象都存在统计信息,则使用CBO优化器优化SQL;如果只有部分对象存在统计信息,也仍然使用CBO优化器优化SQL,优化器会为不存在统计信息对象依据一些内在信息(如分配给该对象的数据块)来生成统计信息,只是这样生成的统计信息可能不准确,而导致产生不理想的执行计划;如果全部对象都无统计信息,则使用RBO来优化该SQL语句。
RULE
仅在9i及之前版本中被支持,10g已经废除。
不论是否存在统计信息,都将使用RBO优化器来优化SQL。
-------------------------------------------------------------------------
ALL_ROWS
在10g中为默认值。
不论是否存在统计信息,都使用CBO优化器,且把CBO的优化目标设定为“最小的成本”。
FIRST_ROWS
CBO尽可能快速的返回结果集的前面少数行记录。
不论是否存在统计信息,都使用CBO优化器,FIRST_ROWS导致CBO使用“试探法”来产生执行计划,这种方式其成本可能会稍大一些。
-------------------------------------------------------------------------------------------
FIRST_ROWS_n
不论是否存在统计信息,都使用CBO优化器,并以最快的速度返回前n行记录,n可以是1,10,100,1000。
CHOOSE
仅在9i及之前版本中被支持,10g已经废除。8i及9i中为默认值。
这个值表示SQL语句既可以使用RBO优化器也可以使用CBO优化器,而决定该SQL到底使用哪个优化器的唯一因素是,所访问的对象是否存在统计信息。如果所访问的全部对象都存在统计信息,则使用CBO优化器优化SQL;如果只有部分对象存在统计信息,也仍然使用CBO优化器优化SQL,优化器会为不存在统计信息对象依据一些内在信息(如分配给该对象的数据块)来生成统计信息,只是这样生成的统计信息可能不准确,而导致产生不理想的执行计划;如果全部对象都无统计信息,则使用RBO来优化该SQL语句。
RULE
仅在9i及之前版本中被支持,10g已经废除。
不论是否存在统计信息,都将使用RBO优化器来优化SQL。
-------------------------------------------------------------------------
ALL_ROWS
在10g中为默认值。
不论是否存在统计信息,都使用CBO优化器,且把CBO的优化目标设定为“最小的成本”。
FIRST_ROWS
CBO尽可能快速的返回结果集的前面少数行记录。
不论是否存在统计信息,都使用CBO优化器,FIRST_ROWS导致CBO使用“试探法”来产生执行计划,这种方式其成本可能会稍大一些。
-------------------------------------------------------------------------------------------
FIRST_ROWS_n
不论是否存在统计信息,都使用CBO优化器,并以最快的速度返回前n行记录,n可以是1,10,100,1000。