各位大神,請問 一張表 有百萬資料記錄,需要讀每一條資料,再對資料處理,使用fetch bulk collect 取資料很慢。有什么方法解決嗎
uj5u.com熱心網友回復:
利用rowid批量讀取資料,比如一次處理1w條資料。uj5u.com熱心網友回復:
弱弱的 問一下,怎么使用使用rowid,能否提供一下 sql 存盤程序
uj5u.com熱心網友回復:
給你提供一個批量洗掉的例子:
declare
cursor mycursor is select rowid from 表名稱 where 取數條件
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 10000; --每次處理10000行,也就是每10000行提交1次
exit when v_rowid.count=0;
forall i in v_rowid.first..v_rowid.last
delete from 表名稱 where rowid = v_rowid(i);
commit;
end loop;
close mycursor;
end;
/
剩下的自行思考
uj5u.com熱心網友回復:
最好明確參考需求和場景。百萬資料,用游標,不是一個好辦法
uj5u.com熱心網友回復:
我就是按照這種方法取的,越到后面fetch 的時間就越長
uj5u.com熱心網友回復:
就是 erp把當前日期前所有的POS資料通過dblink寫入表a中,我這邊再去讀每一條記錄,取出相應的欄位,再處理,寫入另一張表b,同時把當前記錄備insert c表,再把記錄從a表中洗掉。不用游標,用什么方法可以快速的處理?
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/76436.html
標籤:開發
下一篇:oracle 洗掉部分操作日志!
