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

Assignment Help:

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.


Related Discussions:- How bulk bind helps improvement in performance?

Execute immediate statement - syntax, EXECUTE IMMEDIATE Statement   Th...

EXECUTE IMMEDIATE Statement   The EXECUTE IMMEDIATE statement prepare (parses) and instantly executes a dynamic SQL statement or an anonymous PL/SQL block. Syntax:

Declaring cursor variables, Declaring Cursor Variables Once a REF CURS...

Declaring Cursor Variables Once a REF CURSOR type is define by you, and then you can declare the cursor variables of that type in any PL/SQL block or subprogram. In the exampl

Merge and truncate in sql, MERGE and TRUNCATE in SQL SQL has two more ...

MERGE and TRUNCATE in SQL SQL has two more table update operators, MERGE and TRUNCATE. MERGE, like INSERT, takes a source table s and uses it to update a target table t. Brief

Using operator value in pl sql, Using Operator VALUE: As you may expec...

Using Operator VALUE: As you may expect, the operator VALUE returns the value of an object. The VALUE takes its argument a correlation variable.  For illustration, to return a

Cursor attributes in dynamic sql - pl sql, Using Cursor Attributes: Ev...

Using Cursor Attributes: Every cursor has 4 attributes: %NOTFOUND, %FOUND, %ISOPEN, and %ROWCOUNT. If appended to the cursor name, they return the helpful information about

Group and having query, Using a join on 2 tables, select all columns and 10...

Using a join on 2 tables, select all columns and 10 rows from the 2 tables without the use of a Cartesian product. Query: SELECT * FROM EMPLOYEE1 E JOIN STAFF S ON E.EMP_

Oracle PL SQL, I need to write one function and one procedure to query a Or...

I need to write one function and one procedure to query a Oracle 10.1 DB using PL SQL. I have the schema and exact queries...along with work Ive started and a template to put the a

Updating variables, Updating Variables For assignment, SQL uses the ke...

Updating Variables For assignment, SQL uses the key word SET, as in SET X = X + 1 (read as "set X equal to X+1") rather than X: = X + 1 as found in many computer languages.

Recursion, Recursion The Recursion is a powerful method for simplify th...

Recursion The Recursion is a powerful method for simplify the design of the algorithms. Principally, the recursion means the self-reference. In the recursive mathematical serie

Why use cursor variables, Why Use Cursor Variables ? Primarily, you use...

Why Use Cursor Variables ? Primarily, you use the cursor variables to pass the query result sets between the PL/SQL stored subprograms and different clients. Neither PL/SQL nor

Write Your Message!

Captcha
Free Assignment Quote

Assured A++ Grade

Get guaranteed satisfaction & time on delivery in every assignment order you paid with us! We ensure premium quality solution document along with free turntin report!

All rights reserved! Copyrights ©2019-2020 ExpertsMind IT Educational Pvt Ltd