日期:2014-05-16  浏览次数:21147 次

请问重导数据后表关联查询变慢,怎么解决?急!
导新导数据后,单表(300万)查询零点几秒,关联一个代码表(60条),变为30秒才出来,语句:
select count(*) from ins_checkresultmain t1 left join bas_checkstation t2 on t1.stationpkid=t2.pkid 
where checktime>=to_date('2012-07-23 00:00:00','yyyy-mm-dd hh24:mi:ss')
and checktime<=to_date('2012-07-23 23:00:00','yyyy-mm-dd hh24:mi:ss')  
分析:
SELECT STATEMENT, GOAL = CHOOSE Cost=3 Cardinality=1 Bytes=27
 SORT AGGREGATE Cardinality=1 Bytes=27
  NESTED LOOPS Cost=3 Cardinality=1628 Bytes=43956
   TABLE ACCESS BY INDEX ROWID Object owner=GZJDC Object name=INS_CHECKRESULTMAIN Cost=3 Cardinality=1628 Bytes=27676
    INDEX RANGE SCAN Object owner=GZJDC Object name=IDX_INS_CSMAIN_CHKTIME Cost=2 Cardinality=1628
   INDEX UNIQUE SCAN Object owner=GZJDC Object name=PK_BAS_CHECKSTATION Cardinality=1 Bytes=10
原来导数前好象没有TABLE ACCESS BY INDEX ROWID这个的,直接用了IDX_INS_CSMAIN_CHKTIME索引,麻烦各位帮看一下什么原因,谢谢!
------最佳解决方案--------------------
重建索引 ,对这个导入的表做统计分析
------其他解决方案--------------------
看一下执行计划和统计信息
贴上来看看
------其他解决方案--------------------
也做过重建索引和统计分析,用下面语句做的
analyze table ins_checkresultmain compute statistics  ;
alter index idx_ins_csmain_carpkid rebuild;
------其他解决方案--------------------
我们时间用了这个索引
alter index idx_ins_csmain_chktime rebuild ;
------其他解决方案--------------------
刚测试发现,如果只用时间做条件就会快,如果加多一个条件就会变慢。
------其他解决方案--------------------
这个慢不是个别表的问题,现在发现是整个库的都一样,多条件或关联表就会慢。