re INSPECTION_ID INSPECTION_END_TIME  都
建立索引了吗?

解决方案 »

  1.   

    select id from asm where where inspection_id in(select inspection_id from (select rownum numrow,inspection_Id from ( select inspection_id from asm where (re!='new' or re is null)) where (numrow>0 adn numrow<=10) order by inspection_end_tem desc
      

  2.   

    SELECT *
      FROM (SELECT TEMPED__TABLE. *, ROWNUM TEMPED__NUM
              FROM (select id
                      from asm
                     where re != 'NEW' or re is null
                     order by INSPECTION_END_TIME DESC) TEMPED__TABLE
             WHERE ROWNUM <= 10)
     WHERE TEMPED__NUM >= 0;
      

  3.   

    呵呵 好像漏了个条件:
    SELECT *
      FROM (SELECT TEMPED__TABLE. *, ROWNUM TEMPED__NUM
              FROM (select id
                      from asm
                     where (re != 'NEW' or re is null) and 1 = 1
                     order by INSPECTION_END_TIME DESC) TEMPED__TABLE
             WHERE ROWNUM <= 10)
     WHERE TEMPED__NUM >= 0;
      

  4.   

    你可以看下re INSPECTION_ID INSPECTION_END_TIME的索引使用的情况,
    看下是否能用上索引:
      

  5.   

    首先尽量不要用in操作
    例:select abc from a where abc in (select abc from b)
    替代方法1: select a.abc from a,b where a.abc=b.abc(推荐)
    替代方法2: select abc from a where exists (select b.abc from b where a.abc=b.abc)
    可以提高效率
    对于本查询要分页效果则根本不需要in....
      

  6.   

    ok谢谢楼上各位!
    我根据大家建议测试后再相告:)ps:关于索引.不能使用过多.因为还有程序在大批量写入数据到此表:(
      

  7.   

    这个sql语句写的真是不敢恭维,呵呵
      

  8.   

    LuLuT(LuLuT) 的最方便!效率高
      

  9.   

    tonyyue0204(ypyue) :是,呵呵.幸好不是我写的.从来没检查过也:(出了问题才找me,晕菜菜