求助,当一条SQL执行的时候如果我比较关注的是SQL执行的性能,比如执行需要的时间,占用的内存等等我需要关注哪些指标,并且通过何种方式可以查看这些指标?另求入门教程多谢

解决方案 »

  1.   

      在plsql中执行一条语句的时候F5可以查看该语句的执行计划
      分析执行计划可以查看哪一步耗时比较多   
      可以迅速定位问题
      

  2.   

    多谢您的回复
    看执行计划这个事我知道,我是想知道,比如我看到某个SQL的执行计划知道某个地方慢了,那么有什么相应的策略可以调整执行计划吗?
      

  3.   


    --可以在SQL PLUS环境下开启SQL TRACE。参考下列网址
    http://www.cnblogs.com/chinhr/archive/2011/11/09/2243306.html
      

  4.   

    看时间 set timing on 就可以了执行效率分析并调优 可是一件技术活
      

  5.   

       知道了问题 当然要对症下药 。 具体的问题需要具体的分析  比如说sql是采用全表扫描,可以通过增加索引,而根据数据表的数据特点增加何种索引也是需要经验的  如果说sql是慢在数据量太大,可以通过增加分区表进行解决  又如果说sql是慢在数据merge上,可以将合并的过程取消,用其他方式解决
      

  6.   

    说到分区表,楼上有没有发现过,不分区反倒快的情况?我现在就遇到了A表150万条记录B表10000万条记录两表关联。针对A表某字段做Group BY对B表中几个字段求SUM,同时对分组求COUNT执行时间上看,不分区表比分区表快一些
      

  7.   

    分区可以在海量插入/删除时候分摊IO开销也可以在查询部分数据时少扫描数据块你那一个聚合需要全表数据,分区当然只有反作用,应该不应该,那就看你前两个利能不能顶后一个弊了。没有任何一项技术/参数可以在任何情况下提高数据库的性能,如果有,那Oracle就把它锁死了,还给你提供选择做什么。
      

  8.   

    你那个具体情况,如果非要实时,要做的就是改善你的连接条件,尽量走merge join 或者是hash join ,尽量缩小结果集,比如先把B表聚合后再和A做连接如果不需要实时(比如查看年度结果,差一天的数据根本没影响),就直接走物化视图当然,要具体分析,以上措施起反效果也不是不可能。