Oracle SQL中表连接顺序探究

SQL语句优化中大多会写上这样一句,把记录数最小的记录写到From子句的最后以提高查询的效率,我开始也深信不疑,但是自己写语句验证的时候却得到相反的结果。

下面是我验证的结果:

 

SQL> set timing on
SQL> select  count(*) from all_objects,dept;
 
  COUNT(*)
----------
    136540
 
Executed in 3.219 seconds
 
SQL> select  count(*) from dept,all_objects
  2  ;
 
  COUNT(*)
----------
    136540
 
Executed in 1.531 seconds

这样的结果让我很疑惑,后来仔细查阅一些资料后得知,这一条优化规则仅在基于规则的优化方法时有效,然后查看了自己的oracle的优化选择。

choose是oracle的默认选项,采用choose的时候,既可以采用基于成本的优化方法,也可以采用基于规则的优化方法。所以可以肯定的是我上面的例子采用的应该是基于成本的优化方法

 
 




你可能感兴趣的:(oracle,sql,优化)