--代理信息
create table FD_PROXY_INFO(
ID VARCHAR(32) NOT NULL,
PROXY_IP VARCHAR(19),
PROXY_PORT number,
CREATE_TIME DATE,
CONSTRAINT PK_FD_PROXY_INFO PRIMARY KEY (ID)
);
--代理信息明细
CREATE TABLE FD_PROXY_INFO_STATUS(
ID VARCHAR(32) NOT NULL,
PROXY_IP VARCHAR(19),
PROXY_PORT number,
CREATE_TIME DATE,
CONSTRAINT FD_PROXY_INFO_STATUS PRIMARY KEY (ID)
);
--俩个表总数据量约5千万
--删除代理明细中不存在的代理记录,目前这样执行速度忑慢了。有没有好的办法可以让速度快一点,
delete from FD_PROXY_INFO
where proxy_ip not in(
select proxy_ip from FD_PROXY_INFO_STATUS
where 1=1
and to_char(CREATE_TIME,'yyyy-MM')='2014-08'
)
------解决思路----------------------
仅就当前语句来说
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的组合索引
------解决思路----------------------
to_char(CREATE_TIME,'yyyy-MM')='2014-08' 这样很难用到索引
建议用CREATE_TIME=to_date('','');