今天想清空表里面所有数据,但是保存其中一条,于是自己写了一个游标,使用delete方式删除数据,等删除完成了,我使用查询语句查询该表的时候,查询非常慢,按理来说表中多余数据都删除了,只剩下一条数据了。怎么会变得如此慢呢?带着疑问问了别人,说是要重建一下索引。按照他的方法试了之后,果然快了。
declare
cursor biz_cursor is
select fid from biz_files for update;
v_fid biz_files.fid%type; -- 定义变量
begin
open biz_cursor; -- 打开游标
loop
fetch biz_cursor into v_fid; -- 提取游标数据赋值给变量
exit when biz_cursor%notfound;
if v_fid <> '6388f412-69d8-43a7-a55f-72d3bcdd'then -- 当变量 v_fid成立时执行删除操作
delete from BIZ_FILES where current of biz_cursor;
end if;
end loop;
close biz_cursor; -- 关闭游标
end;
alter index PKFID(索引名) rebuild tablespace RCMR_JK(表空间名) online;
网友评论