SELECT id ,name into cur_emp(x).id,cur_emp(x).md5value FROM dm2 where id=p_id_array(x) order by id; 改成SELECT record_dm(id ,name) into cur_emp FROM dm2 where id=p_id_array(x) order by id;
我发现原来查询10w条数据要18s 改成 SELECT record_dm(id ,name) into cur_emp FROM dm2 where id=p_id_array(x) order by id;后要22秒了。
create or replace type EMPARRAY_DM is table of VARCHAR2(200);--------------------------------------------------- create or replace FUNCTION "GETROWMD5" ( p_id_array EMPARRAY--数组 ) return SYS_REFCURSOR IS cur_emp SYS_REFCURSOR;--返回游标 BEGIN open cur_emp for SELECT id ,name FROM dm2 where id in (select * from table(p_id_array)) order by id; RETURN cur_emp; END;里面的sql语句上用到了in。 由于in的效率不高,有人说EXISTS可以替换in,且效率比in高, 怎么实现替换 主要是传入的参数是 一个自定义数组 p_id_array, 如何修改?
cur_emp(x) :=record_dm('','');
改成SELECT record_dm(id ,name) into cur_emp FROM dm2 where id=p_id_array(x) order by id;
改成
SELECT record_dm(id ,name) into cur_emp FROM dm2 where id=p_id_array(x) order by id;后要22秒了。
create or replace
FUNCTION "GETROWMD5" (
p_id_array EMPARRAY--数组
)
return SYS_REFCURSOR
IS
cur_emp SYS_REFCURSOR;--返回游标
BEGIN open cur_emp for SELECT id ,name FROM dm2 where id in (select * from table(p_id_array)) order by id;
RETURN cur_emp;
END;里面的sql语句上用到了in。 由于in的效率不高,有人说EXISTS可以替换in,且效率比in高, 怎么实现替换
主要是传入的参数是 一个自定义数组 p_id_array, 如何修改?