一个中间表,新数据插入后很快就被转移走(删除),请问应该如何建这个表?
每天大约有800万以上的数据这样插入然后再删除
用普通表是不是时间长了会越来越慢啊?
该如何优化这样一个表
------最佳解决方案--------------------基于事务的临时表. 但是要在同一个事务里面去控制.
下面创建一个临时表:
CREATE GLOBAL TEMPORARY TABLE TEMPCHEN(
empno NUMBER(20), --员工编号
empname VARCHAR2(100), --员工姓名
deptno number(20) --所属部门
)
ON COMMIT DELETE ROWS; --提交事务后,删除数据
------其他解决方案--------------------删除的时候 delete from tablename nologging
定期的重建这个表,在统计数据收集作业的时候 不统计这个表
------其他解决方案--------------------是的,会越来越慢的.
可以建一个定时job,执行表收缩
tony@ORCL2> alter table t enable row movement;
表已更改。
tony@ORCL2> alter table t shrink space;
表已更改。
------其他解决方案--------------------按照3L的 建立会话或者事务级临时表就可以
------其他解决方案--------------------还是比较茫然
------其他解决方案--------------------感谢各位的解答
我这边的情况是:基本上一边在一直不停的往这个表发数据,另一边就一直扫描这个表有数据就转移+删除
3L的兄弟说的基于事物的临时表,具体在程序中该如何操作呢