Oracle Index
- index is a database object that provides a fast and efficient way to look up and retrieve data from a table.
- It allows you to quickly fetch the information without having to scan the entire table.
- Indexes are crucial for improving the performance of SELECT queries but can slightly impact the performance of INSERT, UPDATE, and DELETE operations.
- Oracle we can maintain an unlimited number of index on a table and 12c version we can maintain multiple indexes in a single column.
Benefits:
- Faster Data Retrieval
- Improved Query Performance
- Enhanced Joins
- Constraint Enforcement
- Reduced I/O Operations
types of Indexes:
- B-Tree Index
- Unique Index
- Composite index
- Reverse Key Index
- Descending Index
- Bitmap Index
- Function-Based Index
B-Tree Index:
B-Tree means Balanced Tree. It is the Default index on Oracle.
It organizes data in a tree structure where each node has multiple children.
It provides excellent retrieval performance for a wide range of queries.
Examples:
CREATE INDEX index_name ON table_name(column_name);
CREATE UNIQUE INDEX index_name ON table_name(column_name);
CREATE INDEX index_name ON table_name(column_name1,column2);
CREATE INDEX index_name ON table_name(column_name)Reverse;
CREATE INDEX index_name ON table_name(column_name DESC);
Bitmap Index:
- Bitmap indexes are useful for columns with a small number of distinct values.
- It stores bitmaps for each unique value in a column, indicating the true or false of that value in each row of a table.
- This allows for fast and efficient filtering and aggregation operations on the data.
- Bitmap indexes are commonly used in data warehousing environments.
Example:
CREATE BITMAP INDEX index_name ON table_name(column_name);
Function-Based Index:
- function-based index computes the value of a function or expression involving one or more columns and stores it in the index.
- The function used for building the index can be an arithmetic expression or an expression that contains a SQL function, user-defined PL/SQL function and package functions.
- It’s very easy and provides immediate value.
Examples:
CREATE INDEX index_name ON table_name (12 * salary * commission_pct, salary, commission_pct);
CREATE INDEX index_name ON table_name ( UPPER(column_name) );
create/alter index and allocate tablespace:
CREATE INDEX index_name ON table_name(column_name) tablespace tablespace_name;
alter index index_name tablespace tablespace_name;
How to rebulid the index:
alter index index_name rebuild;
rename the index:
alter index index_name rename to new_index_name;
analyze the index:
analyze index index_name validate structure;
drop the index:
drop index index_name;
Usability:
alter index index_name unusable;
alter index index_name rebuild;
select index_name,status from user_indexes where index_name='index_name';
Visibility:
alter index index_name invisible;
alter index index_name visible;
select index_name, index_type, visibility from user_indexes where index_name='index_name');
index Monitoring:
alter index index_name monitoring usage;
alter index index_name nomonitoring usage;
select * from v$object_usage;
select * from dba_indexes;
select * from dba_ind_columns;
select * from user_indexes;
select * from user_ind_columns;
select * from user_ind_partitions;
select * from all_indexes;
select * from v$object_usage;
Comments
Post a Comment