b.docno = a.flddocno这两个字段上有索引吗?

解决方案 »

  1.   

    但我建立了索引后(b.docno = a.flddocno这两个字段都已经建立索引),查询速度快了,但还是第一句比第二句快,请问何解啊?
      

  2.   

    where子句从上往下执行,所以先执行:flddocno is not null
    因为有not null 所以flddocno索引不会被使用你看一下执行计划吧,看看有没有走索引
      

  3.   

    根2个表的数据量有很大关系如果 flddocno 上有索引的话,你还可以把 
    flddocno is not null 改为
    flddocno > ' '
    如果是数值型, 则flddocno > -999 等
    但用不用该字段上的索引,同样和数据量有很大关系
      

  4.   

    如下是两条语句的执行计划:请帮忙分析一下,谢谢
    1)用in的那句
    SELECT STATEMENT, GOAL = CHOOSE       2 1 14
     SORT AGGREGATE                   1        14
      FIRST ROW                                   2  9582 134148
       INDEX FULL SCAN (MIN/MAX)     WWW  TBLDEFINE_FLDDOCNO_IDX  2 9582
        TABLE ACCESS FULL      WWW  STATCALLRESULT        1 3    422)用exists的那句
    SELECT STATEMENT, GOAL = CHOOSE          4  1       28
     SORT AGGREGATE                      1   28
      NESTED LOOPS ANTI                   4  18      504
       INDEX FAST FULL SCAN       WWW  TBLDEFINE_FLDDOCNO_IDX   4  191635  2682890
       INDEX UNIQUE SCAN       WWW   STATCALLRESULT_DOCNO_IDX    58      812谢谢