我是Oracle初学者,希望高手们给我解决这个疑惑。
问题:
1、通过查看执行计划能知道执行这个SQL语句的执行顺序及所消耗资源等信息,是不是执行计划就是给你提供这些信息,而没有其他作用?
2、是不是通过查看执行计划,更改SQL语句的写法进行调优?

解决方案 »

  1.   


    /*
    Execution Plan
    ----------------------------------------------------------
    0 SELECT STATEMENT ptimizer=CHOOSE
    1 0 SORT (AGGREGATE)
    2 1 TABLE ACCESS (BY INDEX ROWID) OF 'USER_INFO'
    3 2 NESTED LOOPS
    4 3 TABLE ACCESS (FULL) OF 'USER_NUM_TABLE'
    5 3 INDEX (RANGE SCAN) OF 'PK_USER_INFO' (UNIQUE)
    请问以上执行计划语句是如何看的?语句的执行顺序是什么? 
    让我们来解释一下怎么看吧,左边的两列数字,第一列表示这条计划的编号,第二列是这条计划的父计划的编号;如果一条计划有子计划,那么先要执行其子计划;在这个例子中:从第一条编号为0的(SELECT STATEMENT ptimizer=CHOOSE)开始,他有个子计划1(SORT (AGGREGATE)),然后1有个子计划2,2有子计划3, 3 有子计划4和5,4是3的第一个子计划,所以先执行4(TABLE ACCESS (FULL) OF 'USER_NUM_TABLE'),再执行5(INDEX (RANGE SCAN) OF 'PK_USER_INFO' (UNIQUE)),4和5执行完返回到其父计划3(NESTED LOOPS),3把4和5取到的rows进行nested loops,结果再返回到2,再到1排序,再到0select.*/
      

  2.   

    执行计划,主要展示ORACLE如何解析SQL,获取一个最佳的取得数据的路径。
    查看执行计划主要查看该计划是否符合预期,是否使用上索引,使用索引的方式,
    表之间的连接方式等,执行SQL调优的一种必不可少的手段。关于执行计划,内容实在太多,在SQL优化中起作重要作用。
    可以百度一下关键字:oracle 执行计划
    另可以买一些优化的书来看。如《oracle10g性能调整》