发布网友 发布时间:2022-05-02 08:12
共3个回答
懂视网 时间:2022-05-02 12:33
table {tablename}_his as select * from {tablename} where ...删除表数据。数据量太大(7444741)无法直接删除,需批量删除。
declare cursor mycursor is SELECT ROWID FROM {tablename} WHERE ltl_time < to_date(‘2017-08-01‘,‘YYYY-mm-dd‘) order by rowid; --------按ROWID排序的Cursor,删除条件是XXX=XXXX,根据实际情况来定。 type rowid_table_type is table of rowid index by pls_integer; v_rowid rowid_table_type; BEGIN open mycursor; loop fetch mycursor bulk collect into v_rowid limit 5000; --------每次处理5000行,也就是每5000行一提交 exit when v_rowid.count=0; forall i in v_rowid.first..v_rowid.last delete from {tablename} nologging where rowid=v_rowid(i); commit; end loop; close mycursor; END;
oracle性能分析2
标签:tab cursor rom int bsp 分区 div where 表数
热心网友 时间:2022-05-02 09:41
说实话,你要求那么高,分又那么少。提高数据库性能的通用方法:(1)添加数据文件,让数据库读写磁盘时分开去写;(2)扩大数据库临时文件,让读写更快;(3)增加索引,视表情况而定。热心网友 时间:2022-05-02 10:59
同学,我是董老师,你这招out了参考资料:iss.whu.e.cn