我联合三个表查询,不使用order by desc 排序,需要0.1秒的时间,
但是加上了一个order by DateTypeCol desc 按照一个日期列排序,竟然需要3秒多,
不知道该如何优化,改善,看了很多帖子,有人说为排序列建立索引,
但是针对这种情况不知道该建立什么类型的索引,说明:数据量现在为2万多请各位朋友们指点迷津,谢谢

解决方案 »

  1.   

    建个索引,然后看看它的执行计划,再看看逻辑读是否减少了。
    能给出表结构和sql语句就方便帮你分析了
      

  2.   

    多谢,这是我的SQL:select 
     cv.cv_js_code,decode(cv.CV_NAMESECRET,1,substr(cv.cv_name,1,1),cv.cv_name),  
     cv.cv_sex,nvl(cv.cv_work_years,0),cv.cv_degree,js.js_modify_dt,
     cv.CV_NAMESECRET,cv.cv_photo,round((sysdate -cv.CV_BIRTHDAY)/365), 
     cew.CVX_POS1_DESC||','||cew.CVX_POS2_DESC||','||cew.CVX_POS3_DESC, 
     cv.CV_LOC_NOW,cew.CVX_EXP_WORK_LOC1, cew.CVX_EXP_WORK_LOC2, cew.CVX_EXP_WORK_LOC3,cew.cvx_fun1,
     cew.CVX_POS1 ,cv.CV_SELF_SCORE,cew.CVX_EXP_SALARY ,d.workinfo from jobseeker js,cv,cv_expect_work cew,
    (select cvw_cv_code,
      max(to_char(CVW_FROM_DT,'YYYY-MM-DD')||'至'||decode(CVW_END_DT,null,'现在',to_char(CVW_END_DT,'YYYY-MM-DD'))||','||CVW_COMPANY||':'||CVW_POSITION_DESC||','||CVW_DESC) as workinfo
        from cv_work group by cvw_cv_code) d  
        
    where CV_VALIDITY='2' and CV_SECURITY=0  and js_code=cv_js_code and cv_code=cvx_cv_code and d.cvw_cv_code=cv.cv_code order by js.js_modify_dt desc
      

  3.   


    select 
     cv_js_code,cv_name,cv_sex,nvl(cv_work_years,0),cv_degree,js_modify_dt,
     CV_NAMESECRET,cv_photo,round((sysdate -CV_BIRTHDAY)/365), 
     CVX_POS1_DESC||','||CVX_POS2_DESC||','||CVX_POS3_DESC, 
     CV_LOC_NOW,CVX_EXP_WORK_LOC1, CVX_EXP_WORK_LOC2, CVX_EXP_WORK_LOC3,cvx_fun1,
     CVX_POS1 ,CV_SELF_SCORE,CVX_EXP_SALARY ,
     f_get_work(cv.cv_code) --把上面的子查询修改. from jobseeker,cv,cv_expect_work where CV_VALIDITY='2' and CV_SECURITY=0  and js_code=cv_js_code and cv_code=cvx_cv_code 
    order by js_modify_dt desc
    修改了SQL把上面的子查询改成视图,使用函数f_get_work()查询对应的数据,这样提高了不使用order by 的速度,
    但是使用order by查询速度依然很慢.以下是函数f_get_work()create or replace function F_GET_WORK(
           cv_code IN number
       ) 
       return varchar2 
    as
      works varchar2(1000);begin
      select workinfo into works from v_cv_onework where cvw_cv_code=cv_code;
      return works;
      
      if works='' or works is null then 
         return '-';
      end if ;
      
      exception 
          when others then 
               return '-';
    end F_GET_WORK;
      

  4.   

    js_modify_dt
    这个字段有没有索引呢?sql> set autotrace on;再执行你的sql,看看执行计划相关 和 相应的成本