How bulk bind helps improvement in performance?, PL-SQL Programming

How Bulk Binds Improve Performance

The assigning of values to the PL/SQL variables in SQL statements is known as binding.

The binding of the whole collection at once is known as the bulk binding. The Bulk binds improve performance by minimizing the number of the context switches between the PL/SQL and SQL engines. With the bulk binds, whole collections, not just an individual element, are passed back and forth. For illustration, the DELETE statement below is sent to the SQL engine just once, with the whole nested table:

DECLARE

TYPE NumList IS TABLE OF NUMBER;

mgrs NumList := NumList(7566, 7782, ...); -- manager numbers

BEGIN

...

FORALL i IN mgrs.FIRST..mgrs.LAST

DELETE FROM emp WHERE mgr = mgrs(i);

END;

In the illustration below, 5000 part numbers and names are loaded into the index-by tables. Then, all the table elements are inserted into a database table twice. At First, they are inserted using a FOR loop, that completes in 38 seconds. Then, they are bulk-inserted by using a FORALL statement that completes in only 3 seconds.

SQL> SET SERVEROUTPUT ON

SQL> CREATE TABLE parts (pnum NUMBER(4), pname CHAR(15));

Table created.

SQL> GET test.sql

1 DECLARE

2 TYPE NumTab IS TABLE OF NUMBER(4) INDEX BY BINARY_INTEGER;

3 TYPE NameTab IS TABLE OF CHAR(15) INDEX BY BINARY_INTEGER;

4 pnums NumTab;

5 pnames NameTab;

6 t1 CHAR(5);

7 t2 CHAR(5);

8 t3 CHAR(5);

9 PROCEDURE get_time (t OUT NUMBER) IS

10 BEGIN SELECT TO_CHAR(SYSDATE,'SSSSS') INTO t FROM dual; END;

11 BEGIN

12 FOR j IN 1..5000 LOOP -- load index-by tables

13 pnums(j) := j;

14 pnames(j) := 'Part No. ' || TO_CHAR(j); 15 END LOOP;

16 get_time(t1);

17 FOR i IN 1..5000 LOOP -- use FOR loop

18 INSERT INTO parts VALUES (pnums(i), pnames(i));

19 END LOOP;

20 get_time(t2);

21 FORALL i IN 1..5000 -- use FORALL statement

22 INSERT INTO parts VALUES (pnums(i), pnames(i));

23 get_time(t3);

24 DBMS_OUTPUT.PUT_LINE('Execution Time (secs)');

25 DBMS_OUTPUT.PUT_LINE('---------------------');

26 DBMS_OUTPUT.PUT_LINE('FOR loop: ' || TO_CHAR(t2 - t1));

27 DBMS_OUTPUT.PUT_LINE('FORALL: ' || TO_CHAR(t3 - t2));

28* END;

SQL> /

Execution Time (secs)

---------------------

FOR loop: 38

FORALL: 3

PL/SQL process successfully completed.

In the bulk-bind input collections, you can use the FORALL statement. And in the bulk-bind output collections, you can use the BULK COLLECT clause.

Posted Date: 10/4/2012 3:27:07 AM | Location : United States







Related Discussions:- How bulk bind helps improvement in performance?, Assignment Help, Ask Question on How bulk bind helps improvement in performance?, Get Answer, Expert's Help, How bulk bind helps improvement in performance? Discussions

Write discussion on How bulk bind helps improvement in performance?
Your posts are moderated
Related Questions
Data Abstraction The Data abstraction extracts the important properties of data while ignoring the not necessary details. Once you design a data structure, you can fail to reme

Scoping Within the similar scope, all the declared identifiers should be unique. So, even if their datatypes differ, the variables and parameters cannot share the similar name.

DBMS: The answer to this question is of course given in of the theory book. This book is concerned with SQL DBMSs and SQL databases in particular. Soon we will be looking a

Definition of CROSS JOIN - SQL Let s = t1 CROSS JOIN t2, where t1 and t2 are table expressions optionally accompanied by range variables. Then: Note: Here T denotes Table

Obtaining a natural join by specifying the common columns Synatax: SELECT * FROM IS_CALLED JOIN IS_ENROLLED_ON USING ( StudentId ) However, a named columns join doe

Using Aggregation on Nested Tables Example is the most direct translation of its counterpart in the theory book that can be obtained in SQL but it is so over-elaborate that no

Scope Rules You cannot declare an exception twice in the similar block. Though, you can, declare the similar exception in 2 different blocks. The Exceptions declared in a bloc

Procedural Constraint Enforcement (Triggers) SQL has an alternative method of addressing database integrity, involving event-driven procedural code. The special procedures th

Using Cursor Attributes To process the SQL data manipulation statements, the SQL engine must opens an implicit cursor named SQL. This cursor's attributes (%FOUND, %NOTFOUND, %

Parameter & Keyword Description: function_name: The user-defined function is identifying by that keyword. parameter_name: This identifies the formal parameter that