Você está na página 1de 4

BITMAP JOIN INDEX

###########################################################################################

SYS>>conn srinu/srinu
Connected.
SRINU>>set autotrace on
SRINU>>set timing on
SRINU>>select count(*) from emp,dept1
2 where emp.deptno=dept1.deptno;

COUNT(*)
----------
10000000

Elapsed: 00:00:35.81

Execution Plan
----------------------------------------------------------
Plan hash value: 857239816

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

| Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)| Time


|

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

| 0 | SELECT STATEMENT | | 1 | 26 | | 40390 (1)| 00:08


:05 |

| 1 | SORT AGGREGATE | | 1 | 26 | | |
|

|* 2 | HASH JOIN | | 11M| 275M| 118M| 40390 (1)| 00:08


:05 |

| 3 | TABLE ACCESS FULL| DEPT1 | 4989K| 61M| | 3222 (1)| 00:00


:39 |

| 4 | TABLE ACCESS FULL| EMP | 11M| 137M| | 15189 (1)| 00:03


:03 |

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

Predicate Information (identified by operation id):


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

2 - access("EMP"."DEPTNO"="DEPT1"."DEPTNO")

Note
-----
- dynamic sampling used for this statement (level=2)
Statistics
----------------------------------------------------------
671 recursive calls
1 db block gets
123072 consistent gets
80849 physical reads
5260 redo size
422 bytes sent via SQL*Net to client
415 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
8 sorts (memory)
0 sorts (disk)
1 rows processed

SRINU>>alter table dept1


2 add constraint dept_constr unique(deptno);

Table altered.

Elapsed: 00:01:08.78
SRINU>>create bitmap index empdept_indx
2 on emp(dept1.deptno)
3 from emp,dept1
4 where emp.deptno=dept1.deptno;

Index created.

Elapsed: 00:00:34.88
SRINU>>conn / as sysdba
Connected.
SYS>>alter system flush buffer_cache;

System altered.

Elapsed: 00:00:00.01
SYS>>alter system flush shared_pool;

System altered.

Elapsed: 00:00:00.03
SYS>>conn srinu/srinu
Connected.
SRINU>>set autotrace on
SRINU>>set timing on
SRINU>>select count(*) from emp,dept1
2 where emp.deptno=dept1.deptno;

COUNT(*)
----------
10000000

Elapsed: 00:00:00.17

Execution Plan
----------------------------------------------------------
Plan hash value: 3834381467
--------------------------------------------------------------------------------

| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| T


ime |

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

| 0 | SELECT STATEMENT | | 1 | 13 | 850 (0)| 0


0:00:11 |

| 1 | SORT AGGREGATE | | 1 | 13 | |
|

| 2 | BITMAP CONVERSION COUNT| | 11M| 137M| 850 (0)| 0


0:00:11 |

| 3 | BITMAP INDEX FULL SCAN| EMPDEPT_INDX | | | |


|

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

Note
-----
- dynamic sampling used for this statement (level=2)

Statistics
----------------------------------------------------------
1283 recursive calls
0 db block gets
1213 consistent gets
1605 physical reads
0 redo size
422 bytes sent via SQL*Net to client
415 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
21 sorts (memory)
0 sorts (disk)
1 rows processed

SRINU>>
OBSERVATION : TIME ELAPSED FOR SELECT STATEMENT
ON TABLE NOT HAVING INDEX AND
HAVING INDEX.

NORMAL TABLE JOIN CONDITION : 00:00:35.81

(FULL TABLE SCAN)

BITMAP-JOIN INDEX CONDITION : 00:00:00.17

TIP : SPECIAL BITMAP-JOIN INDEXES WILL BE MORE EFFECTIVE THAN NORMAL JOIN
CONDITION.

Você também pode gostar