我下载了几个关于oracle 查询优化的  方法, 文中提到 oracle 查表从 右致左,where执行条件 顺序也是 从右到做
例如
表 TAB1 16,384 条记录 
表 TAB2 1       条记录 select count(*) from tab1,tab2    执行时间0.96秒 
      
select count(*) from tab2,tab1    执行时间26.09秒 

但是我在实际操作时,执行2条查询语句执行的 时间是一样的,而且基本上和 where 条件 顺序没多大关系,PS:我是以 oracle10g 为数据库,在plsql 中查询的 难道oracle 做了优化??

解决方案 »

  1.   

        从最终权威那获得SQL调优的帮助:Oracle数据库本身!通过使用SQL profiles来确定查询行为、学习如何使用ADDM快速和轻松地解决普通的性能问题。    在10g中,你有了自动数据库诊断监视器(Automatic Database Diagnostic Monitor ADDM),他是一个不知疲倦的收集数据库性能统计信息来定位性能瓶颈、分析SQL语句和不停的提供各种类型的建议以提高性能的机器DBA,它一般和其他“建议器”如SQL Tuning Advisor一起工作。在本文中,你将了解到它是如何工作的。
      

  2.   

    楼主,你把TABLE1表的数据量增加到上百万你试下呢?
      

  3.   

    在“基于规则的优化器(RBO)”情况下,是使用如楼主所说的搜索顺序的;然而如果是“基于统计信息的优化器(CBO)”情况下,oracle会根据统计过的每个表的数据量自动调整搜索顺序,这时候几个表先写哪个再写哪个就不重要了。此外,如WWWTYB所说,在oracle10g起增加了ADDM(虽然这东西偶尔也引起一些麻烦……),并且这东西默认情况下是安装完数据库以后就已经启用了的(默认也是使用CBO的),在这种情况下你from后面的表顺序不管怎样,效果都是一样的。ps:从plsql中看到的执行计划不一定就是oracle真正的执行计划,最好执行一次这个语句,再从系统视图中去查真正的执行计划。
      

  4.   

    同意
    使用cbo后这个顺序已经无关紧要了