问题在于你要为sql tunning定下一套衡量的标准。执行速度、资源cost等等。
而且,基于这个标准,sql的tunning结果不是一成不变的,因为,随之用户访问量、数据量、I/O吞吐性能、系统负载。都会发生变化,从而影响你的tunning方案。
所以,这就像做应用题一样,明确目的,给出当时最合适的方案。

解决方案 »

  1.   

    http://expert.csdn.net/Expert/topic/1973/1973807.xml?temp=.6872675
      

  2.   

    这个,呵呵,我又读了一遍
    http://expert.csdn.net/Expert/topic/1343/1343313.xml?temp=.1096613
      

  3.   

    select min(代码长度 * 执行时间) from all_sql;虽算不上是衡量sql好坏的唯一标准,但它是主要标准之一。
      

  4.   

    以上各位的意见有令人茅塞顿开的感觉SQL的优化是数据库的优化的一部分,数据库优化又是整个应用系统优化的一部分。说到优化的目的,无非是对应用系统的优化,使之更高效、更稳定、更安全,对SQL的优化也要从整体上考虑。撇开整体,讨论SQL的优劣没有太大的意义。同样一类调整,对一应用系统能提高性能,对另一应用系统可能反而降低性能。要对具体问题具体分析,找到问题的关键,作出有针对性的调整和优化。就我目前负责的系统来说,乙方发现在事务发生的高峰期时,系统不够稳定(down过几次),现在又面临扩充网点的需求,令他们十分担心系统是否有足够的负载能力。如果不能解除他们的担心,很有可能放弃我们公司的这一套系统,采取其他方案,这样我们的资金也收不回来了(扯得太远了 :) )。所以我现在的目的是,找出占用系统资源(包括时间资源)最大的一系列SQL,对它们做调整和优化,预期在优化以后,不但能处理目前规模下高峰期的运算,还有剩余的资源留给将要扩充的网点。在这种情况下,sql的调整就要以此目的为调整的目的,不能以单一的cost或cpu时间为衡量标准,而是整体占用资源为标准(这里的资源包括cpu时间,内存,硬盘IO等等),以最先到达系统极限的方面为重点考虑对象,尽量消除系统瓶颈。
      

  5.   

    互联网下实现 打印, 报表, 图形分析的完美解决方案.
    源码100%开放,
    详情参见  http://www.fcSoft.com.cn
      

  6.   

    /*ordered use_nl(b)*/,你要使用hint时必须知道它存在的意义,ordered是强制优化器选择表顺序,use_nl是使用nest loop,你要看修改前的执行计划和修改后的做比较,然后对照应用才能调整,sql调优不止是简单的hint就能实现的