有一张结果集表:tb_rel_tmpqrydata66 (re1和re2为索引,索引名称为IND_TMPQRYDATA66_REMARK2)
和一张申报表:tb_lvy_declaredata (两个索引operatortime和taxregcode,都用到了)
点击查询的时候动态生成的第一个SQL如下:
select rownum,l2subcode,l3subcode,l4subcode,l5subcode,l6subcode,
l7subcode,l8subcode,l9subcode,l10subcode,l11subcode
from tb_rel_tmpqrydata66 t
Where /*t.flag1='01'
And */t.re2='200904'
And  Not Exists (Select d.taxregcode From tb_lvy_declaredata d 
                 Where d.operatortime>to_date(to_char(Sysdate,'yyyy-mm-dd'),'yyyy-mm-dd')
                 And t.l2subcode=d.taxregcode
                 And t.re2='200904') 
And t.re1 Like '2610102%'
执行计划如下:
TABLE ACCESS FULL  TB_REL_TMPQRYDATA66  2210  11805  1924215,对这个表全表扫描,但是我的2个索引都用到了
对tb_lvy_declaredata 表走2个索引。。
********************************************************************************************************
点击查询的时候动态生成的第二个SQL如下:
select rownum,l2subcode,l3subcode,l4subcode,l5subcode,l6subcode,
l7subcode,l8subcode,l9subcode,l10subcode,l11subcode
from tb_rel_tmpqrydata66 t
Where /*t.flag1='01'
And */t.re2='200904'
And  Not Exists (Select d.taxregcode From tb_lvy_declaredata d 
                 Where d.operatortime>to_date(to_char(Sysdate,'yyyy-mm-dd'),'yyyy-mm-dd')
                 And t.l2subcode=d.taxregcode
                 And t.re2='200904') 
And t.re1 Like '261010256%'(like后面比上面的sql多了2位数字)
执行计划如下:
TABLE ACCESS BY INDEX ROWID  TB_REL_TMPQRYDATA66  604   1361  221843,这次用到了索引
对tb_lvy_declaredata 表走2个索引但是2个查询的都很快,不到2秒就出来了,可是遍历的时候慢的很,地增量在100左右,遍历太慢了
请教各位高手啊,为什么第一个不用索引,第二个就能用到索引啊?