12 Managing Indexes Copyright Oracle Corporation 2001 All

  • Slides: 21
Download presentation
12 Managing Indexes Copyright © Oracle Corporation, 2001. All rights reserved.

12 Managing Indexes Copyright © Oracle Corporation, 2001. All rights reserved.

Objectives After completing this lesson, you should be able to do the following: •

Objectives After completing this lesson, you should be able to do the following: • List the different types of indexes and their uses • Create various types of indexes • Reorganize indexes • Maintain indexes • Monitor the usage of an index 12 -2 Copyright © Oracle Corporation, 2001. All rights reserved.

Classification of Indexes • Logical – – Single column or concatenated Unique or nonunique

Classification of Indexes • Logical – – Single column or concatenated Unique or nonunique Function-based Domain • Physical – Partitioned or nonpartitioned – B-tree Normal or reverse key – Bitmap 12 -3 Copyright © Oracle Corporation, 2001. All rights reserved.

B-Tree Index entry Root Branch Index entry header Leaf Key column length Key column

B-Tree Index entry Root Branch Index entry header Leaf Key column length Key column value ROWID 12 -5 Copyright © Oracle Corporation, 2001. All rights reserved.

Bitmap Indexes Table File 3 Block 10 Block 11 Block 12 Index start end

Bitmap Indexes Table File 3 Block 10 Block 11 Block 12 Index start end key ROWID bitmap <Blue, 10. 0. 3, 12. 8. 3, 100010010100> <Green, 10. 0. 3, 12. 8. 3, 0001010000100100000> <Red, 10. 0. 3, 12. 8. 3, 0100000011000001001> <Yellow, 10. 0. 3, 12. 8. 3, 0010000010> 12 -7 Copyright © Oracle Corporation, 2001. All rights reserved.

Comparing B-Tree and Bitmap Indexes B-tree Bitmap Suitable for high-cardinality Suitable for low-cardinality columns

Comparing B-Tree and Bitmap Indexes B-tree Bitmap Suitable for high-cardinality Suitable for low-cardinality columns 12 -9 Updates on keys relatively inexpensive Updates to key columns very expensive Inefficient for queries using OR predicates Efficient for queries using OR predicates Useful for OLTP Useful for data warehousing Copyright © Oracle Corporation, 2001. All rights reserved.

Creating Normal B-Tree Indexes CREATE INDEX hr. employees_last_name_idx ON hr. employees(last_name) PCTFREE 30 STORAGE(INITIAL

Creating Normal B-Tree Indexes CREATE INDEX hr. employees_last_name_idx ON hr. employees(last_name) PCTFREE 30 STORAGE(INITIAL 200 K NEXT 200 K PCTINCREASE 0 MAXEXTENTS 50) TABLESPACE indx; 12 -10 Copyright © Oracle Corporation, 2001. All rights reserved.

Creating Indexes: Guidelines • Balance query and DML needs • Place in separate tablespace

Creating Indexes: Guidelines • Balance query and DML needs • Place in separate tablespace • Use uniform extent sizes: Multiples of five blocks or MINIMUM EXTENT size for tablespace • Consider NOLOGGING for large indexes • INITRANS should generally be higher on indexes than on the corresponding tables. 12 -13 Copyright © Oracle Corporation, 2001. All rights reserved.

Creating Bitmap Indexes CREATE BITMAP INDEX orders_region_id_idx ON orders(region_id) PCTFREE 30 STORAGE(INITIAL 200 K

Creating Bitmap Indexes CREATE BITMAP INDEX orders_region_id_idx ON orders(region_id) PCTFREE 30 STORAGE(INITIAL 200 K NEXT 200 K PCTINCREASE 0 MAXEXTENTS 50) TABLESPACE indx; 12 -15 Copyright © Oracle Corporation, 2001. All rights reserved.

Changing Storage Parameters for Indexes ALTER INDEX employees_last_name_idx STORAGE(NEXT 400 K MAXEXTENTS 100); 12

Changing Storage Parameters for Indexes ALTER INDEX employees_last_name_idx STORAGE(NEXT 400 K MAXEXTENTS 100); 12 -18 Copyright © Oracle Corporation, 2001. All rights reserved.

Allocating and Deallocating Index Space ALTER INDEX orders_region_id_idx ALLOCATE EXTENT (SIZE 200 K DATAFILE

Allocating and Deallocating Index Space ALTER INDEX orders_region_id_idx ALLOCATE EXTENT (SIZE 200 K DATAFILE ‘/DISK 6/indx 01. dbf’); ALTER INDEX orders_id_idx DEALLOCATE UNUSED; 12 -20 Copyright © Oracle Corporation, 2001. All rights reserved.

Rebuilding Indexes Use the ALTER INDEX command to: • Move an index to a

Rebuilding Indexes Use the ALTER INDEX command to: • Move an index to a different tablespace • Improve space utilization by removing deleted entries ALTER INDEX orders_region_id_idx REBUILD TABLESPACE indx 02; 12 -21 Copyright © Oracle Corporation, 2001. All rights reserved.

Rebuilding Indexes Online • Indexes can be rebuilt with minimal table locking. ALTER INDEX

Rebuilding Indexes Online • Indexes can be rebuilt with minimal table locking. ALTER INDEX orders_id_idx REBUILD ONLINE; • Some restrictions still apply. 12 -23 Copyright © Oracle Corporation, 2001. All rights reserved.

Coalescing Indexes Before coalescing After coalescing ALTER INDEX orders_id_idx COALESCE; 12 -24 Copyright ©

Coalescing Indexes Before coalescing After coalescing ALTER INDEX orders_id_idx COALESCE; 12 -24 Copyright © Oracle Corporation, 2001. All rights reserved.

Checking Indexes and Their Validity ANALYZE INDEX orders_region_id_idx VALIDATE STRUCTURE; INDEX_STATS 12 -25 Copyright

Checking Indexes and Their Validity ANALYZE INDEX orders_region_id_idx VALIDATE STRUCTURE; INDEX_STATS 12 -25 Copyright © Oracle Corporation, 2001. All rights reserved.

Dropping Indexes • Drop and recreate an index before bulk loads. • Drop indexes

Dropping Indexes • Drop and recreate an index before bulk loads. • Drop indexes that are infrequently needed and build them when necessary. • Drop and recreate invalid indexes. DROP INDEX hr. deptartments_name_idx; 12 -27 Copyright © Oracle Corporation, 2001. All rights reserved.

Identifying Unused Indexes • To start monitoring the usage of an index: ALTER INDEX

Identifying Unused Indexes • To start monitoring the usage of an index: ALTER INDEX hr. dept_id_idx MONITORING USAGE • To stop monitoring the usage of an index: ALTER INDEX hr. dept_id_idx NOMONITORING USAGE 12 -29 Copyright © Oracle Corporation, 2001. All rights reserved.

Obtaining Index Information about indexes can be obtained by querying the following views: •

Obtaining Index Information about indexes can be obtained by querying the following views: • DBA_INDEXES: Provides information on the indexes • DBA_IND_COLUMNS: Provides information on the columns indexed • V$OBJECT_USAGE: Provides information on the usage of an index 12 -30 Copyright © Oracle Corporation, 2001. All rights reserved.

Summary In this lesson, you should have learned how to: • Create different types

Summary In this lesson, you should have learned how to: • Create different types of indexes • Reorganize indexes • Drop indexes • Get index information from the data dictionary • Begin and end monitoring usage of indexes 12 -31 Copyright © Oracle Corporation, 2001. All rights reserved.

Practice 12 Overview This practice covers the following topics: • Creating an index on

Practice 12 Overview This practice covers the following topics: • Creating an index on columns of a table • Moving the index to another tablespace • Dropping an index • Obtain index information 12 -32 Copyright © Oracle Corporation, 2001. All rights reserved.

12 -34 Copyright © Oracle Corporation, 2001. All rights reserved.

12 -34 Copyright © Oracle Corporation, 2001. All rights reserved.