Sunteți pe pagina 1din 3

BIG DATA PROCESSING IN PL/SQL

set timing on
alter session set nls_date_format='yyyy-mm-dd';
with t as (select substr(rownum,length(rownum),1) rnum,a.* from
( select * from temp_jp) a)
select count(*) from t where sal between 6300 and 7200
and hiredate between to_date('2009-09-14','yyyy-mm-dd') and to_date('201
3-03-08','yyyy-mm-dd');
COUNT(*)
----------
4444
Elapsed: 00:00:00.18
set serverout on size 1000000 timing on
declare
v_job number;
v_num number:=0;
/*********
create table temp2_jp(col number,val number);
break on report
compute sum of val on report
select * from temp2_jp order by col;
*********/
begin
execute immediate 'truncate table temp2_jp';
execute immediate 'alter session set nls_date_format='''||'yyyy-mm-dd'||''' '
;
for i in 0..9 loop
insert into temp2_jp
with t as (select substr(rownum,length(rownum),1) rnum,a.* from (
select * from temp_jp) a)
select i,count(*) from t where rnum = i and sal between 6300 and 7200
and hiredate between '2009-09-14' and '2013-03-08';

commit;

end loop;
end;
/
PL/SQL procedure successfully completed.
Elapsed: 00:00:08.91
break on report
compute sum of val on report
select * from temp2_jp order by col;
COL VAL
---------- ----------
0 466
1 427
2 438
3 457
4 409
5 425
6 445
7 453
8 458
9 466
----------
COL VAL
---------- ----------
sum 4444
10 rows selected.
Elapsed: 00:00:00.01
set serverout on size 1000000 timing on
declare
v_job number;
v_num number:=0;
/*********
break on report
compute sum of val on report
select * from temp2_jp order by col;
*********/
begin
execute immediate 'truncate table temp2_jp';
execute immediate 'alter session set nls_date_format='''||'yyyy-mm-dd'||''' ';
for i in 0..9 loop
dbms_job.submit(v_job,'begin
insert into temp2_jp
with t as (select substr(rownum,length(rownum),1) rnum,a.* from (
select * from temp_jp) a)
select '||i||',count(*) from t where rnum = '||i||
' and sal between 6300 and 7200 and hiredate between '''||'2009-09-14
'||''' and '''||'2013-03-08'||''' ;
end;',next_date=>sysdate);
commit;
end loop;
end;
/
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.13
break on report
compute sum of val on report
select * from temp2_jp order by col;
COL VAL
---------- ----------
0 466
1 427
2 438
3 457
4 409
5 425
6 445
7 453
8 458
9 466
----------
COL VAL
---------- ----------
sum 4444
10 rows selected.
Elapsed: 00:00:00.01
Using pl/sql parallel processing, large volumes of data can be processed in less
amount of time

S-ar putea să vă placă și