本帖最后由 student_2008 于 2014-10-15 21:21:20 编辑

解决方案 »

  1.   

    你的删除语句是不是逻辑有问题,只要明细表8月没有明细就删除
    建议使用not exists,比not in 执行要快,越是大表差异越明显
    delete from FD_PROXY_INFO T
    where not exists (
        select 1 from FD_PROXY_INFO_STATUS
        where  proxy_ip=T. proxy_ip
        and to_char(CREATE_TIME,'yyyy-MM')='2014-08'
    )
    AND to_char(CREATE_TIME,'yyyy-MM')='2014-08'
    如果还慢的话可以在关联字段上加上索引,提升查询速度
      

  2.   

    仅就当前语句来说
    FD_PROXY_INFO_STATUS 应该建proxy_ip,to_char(CREATE_TIME,'yyyy-MM')的组合函数索引
    也可调整查询条件,改为
    CREATE_TIME>=to_date('2014-08-01','yyyy-mm-dd') and CREATE_TIME<to_date('2014-09-01','yyyy-mm-dd')
    创建proxy_ip,CREATE_TIME的组合索引
      

  3.   

    to_char(CREATE_TIME,'yyyy-MM')='2014-08' 这样很难用到索引
    建议用CREATE_TIME=to_date('','');