日期:2014-05-17  浏览次数:20747 次

一个中间表,新数据插入后很快就被转移走(删除),请问应该如何建这个表?
每天大约有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的兄弟说的基于事物的临时表,具体在程序中该如何操作呢