select wtd_no,wtzh,xmbh,wtrq,zzrq,chuchangrq,jgbw,pz,qddj,jcry1_name,jcrq1,jcrq2,jc_wcflag,sh_wcflag,wt_wcflag,shry_name,shrq,cpbz 
from rws 
where substr(xmbh,1,2)= 'hn'    
and CHUCHANGRQ<='2004-09-11'  
and JC_WCFLAG ='未完成' 
ORDER BY xmbh--在JC_WCFLAG字段上建个索引.如果还是很慢,可以考虑建函数索引substr(xmbh,1,2); 另:用了排序了,是要减慢速度的.

解决方案 »

  1.   

    select wtd_no,wtzh,xmbh,wtrq,zzrq,chuchangrq,jgbw,pz,qddj,jcry1_name,jcrq1,jcrq2,jc_wcflag,sh_wcflag,wt_wcflag,shry_name,shrq,cpbz 
    from rws 
    where substr(xmbh,1,2)= 'hn'    
    查询速度很快,以后增加一条件就慢一点再增加一条件就更慢一点,不知怎么才能提高查询速度
      

  2.   

    加了order by只会破坏原来的索引方式,速度当然慢,与条件多与少没关系
      

  3.   

    你的数据库配置不对,增大SORT_AREA_SIZE,db_block_buffers
      

  4.   

    where substr(xmbh,1,2)= 'hn'    --这样用不到索引。
    and CHUCHANGRQ<='2004-09-11'  
    and JC_WCFLAG ='未完成' 
    ORDER BY xmbh
    -----------------------------------------------
    改为  
    where JC_WCFLAG ='未完成' 
    and CHUCHANGRQ<='2004-09-11'
    and substr(xmbh,1,2)= 'hn' 
    应该会快一些。
    尽量不要用order by 
      

  5.   

    从你的Statistics来看
    1.你的SORT_AREA_SIZE太小,引起了sort(disk)
    2.consistent gets的数值太大,可能是索引建的有问题,删除JC_WCFLAG与CHUCHANGRQ的索引
    3.where substr(xmbh,1,2)= 'hn'改为 xmbh like 'hn%' 
    我想无论2,3做任何一个都可以加快你的效率。