欢迎大家讨论一下 INDEX BY表的问题.

[复制链接]
查看11 | 回复0 | 2010-3-1 11:20:04 | 显示全部楼层 |阅读模式
大家好:
  我对于使用index by表,有如下疑问. 比如:
下面存储过程:
create or replace procedure IITest
is
TYPE numtab IS TABLE OF NUMBER (20) INDEX BY BINARY_INTEGER;
TYPE nametab IS TABLE OF VARCHAR2 (50) INDEX BY BINARY_INTEGER;
pnumsnumtab;
pnames nametab;

t1 NUMBER;
t2 NUMBER;

begin

select DBMS_UTILITY.get_timeINTO t1FROM DUAL;

FOR j IN 1 .. 1000000
LOOP
pnums (j) := j;
pnames (j):= 'Seq No. ' || TO_CHAR (j);
END LOOP;

FORALL i IN 1 .. 1000000
INSERT INTO ttest VALUES (pnums (i), pnums(i));
commit;

select DBMS_UTILITY.get_timeINTO t2FROM DUAL;

dbms_output.put_line(to_char(t2-t1));

end IITest;
使用了forall批量更新, 更新速度的确是快了. 但是,,, ,,,
这个前期的构建index by表pnums 的时候,会不会占大量的内存啊.(这个时候如果是业务高峰期呢) 
我的疑问是: 构建超过100W记录的index by表的时候,会占用大量内存么??  如果占的话,这个影响相对于用for循环来1条条的进行DML来比,哪个更合算些?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行