--信息明细
CREATE TABLE FD_INFO_STATUS(
ID VARCHAR(32) NOT NULL,
P1 VARCHAR(19),
p2 number,
CREATE_TIME DATE,
CONSTRAINT FD_INFO_STATUS PRIMARY KEY (ID)
);
表记录余约600W
现在想删除某天,p2=9999的记录,运行sql的时候发现特别慢,求优化
delete from FD_INFO_STATUS a
where 1=1
and p2=9999
and to_char(CREATE_TIME,'yyyy-MM-dd')='2014-08-17'
and id in(
select id from FD_INFO_STATUS where 1=1
and to_char(CREATE_TIME,'yyyy-MM-dd')='2014-08-17'
and p2=9999
)
------解决思路----------------------
id是主键吧,这个语句看起来条件重复了
delete from FD_INFO_STATUS a
where p2=9999
and CREATE_TIME>=to_date('2014-08-17','YYYY-MM-DD')
and CREATE_TIME<to_date('2014-08-18','YYYY-MM-DD');
如果该表存的是好几天的数据,那么,在create_time字段上创建索引可以起到不错的效果
------解决思路----------------------
如果想利用现在的CREATE_TIME的索引,需要把条件改为
CREATE_TIME>=to_date('2014-08-17','yyyy-mm-dd') and CREATE_TIME<to_date('2014-08-17','yyyy-mm-dd')+1
或是直接给to_char(CREATE_TIME,'yyyy-MM-dd')建函数索引