有一个程序,一直在插入数据,
程序插入的数据有重复的,程序不是我们做的所以不能修改
现在想实时的删除重复的数据,数据量很大的,现在已经30万数据
每天还要插入2000条,以后还会更多。
5分钟删除一次也可以,
这个要怎么做,
编写触发器,每条纪录进行检索,查询相同的么,这个好像效率太低了
有没有好的办法
程序插入的数据有重复的,程序不是我们做的所以不能修改
现在想实时的删除重复的数据,数据量很大的,现在已经30万数据
每天还要插入2000条,以后还会更多。
5分钟删除一次也可以,
这个要怎么做,
编写触发器,每条纪录进行检索,查询相同的么,这个好像效率太低了
有没有好的办法
定时删除的话,你建一个JOB就行了啊。给一个每天定时执行多次JOB的例子,
例如每天中午12:00,下午5:30执行:(作者: oldwain, 出处:oldwain's Blog)
job每半小时执行一次调用外层procedure, 由外层procedure判断时间决定是否执行原来的procedure.<<>begin
dbms_job.submit(job => :job,
what => 'pshell;',
next_date => sysdate,
interval => 'sysdate+30/60/24';
commit;
end;
create procedure pshell as
begin
if to_char(sysdate, 'hh24:mi") > '12:00' and to_char(sysdate, 'hh24:mi") < '12:30' then
p;
end if;
if to_char(sysdate, 'hh24:mi") > '17:30' and to_char(sysdate, 'hh24:mi") < '18:00' then
p;
end if;
end;
--就是做两个过程,一个用来判断时间,一个执行需求。
我觉得那不是办法,可以对插入的表建触发器,不让插入重复的数据,从而避免删除重复数据的操作。
====================================================================================
建触发器很不好。如果插入大数据量,比如上千万条数据,那么你每插一条就要触发一次,这就要触发上千万次。反之建JOB,只5分钟执行一次。谁的效率高?
数据完整性约束,行不通的,数据不是完全一样的,判断很麻烦的,要满足3个条件才算一样的。
如果用trigger 判断,现在,插入一条数据要25秒,汗!好了,感谢各位了,散分