Oracle Database Index Type

Function-Based Indexes in Oracle Database: How It Works and When to Use It

Stores a computed expression result in an index so compatible predicates can search that value.

What Is a Function-Based Indexes in Oracle Database?

Stores a computed expression result in an index so compatible predicates can search that value.

How the Function-Based Indexes Algorithm Works

Stores a computed expression result in an index so compatible predicates can search that value.

Diagram showing the Function-Based Indexes lookup algorithm
Conceptual Function-Based Indexes algorithm. Exact behavior depends on the database version and query plan.

When to Use Function-Based Indexes

Case-folded lookups, derived values, and deterministic expressions used repeatedly.

How to Create a Oracle Database Function-Based Indexes

Review data quality, existing structures, feature support, build time, and deployment requirements before creating an index on a production table.

CREATE INDEX users_lower_email_ix ON users (LOWER(email));

Function-Based Indexes Query Example

This example demonstrates the matching query shape. Check the execution plan to confirm that the engine can use the index.

SELECT user_id FROM users WHERE LOWER(email) = LOWER('Reader@example.com');

Queries Supported by Function-Based Indexes

Case-folded lookups, derived values, and deterministic expressions used repeatedly. A similar-looking predicate may not use the same access path; operators, expressions, key order, and data type all matter.

Read Performance, Storage, and Write Costs

Expressions are maintained on writes; NLS settings, determinism, and statistics matter. Indexes reduce some search work but require storage and add maintenance to writes.

Function-Based Indexes Limitations and Common Mistakes

The query expression and function semantics must match the indexed expression.

Do not assume that an index being present means the optimizer chose it or that the query became selective.

How to Measure and Tune Function-Based Indexes

Gather statistics and inspect DBMS_XPLAN access predicates for expression matching.

Compare representative plans and timings before and after, including concurrent writes and realistic data volumes.

Function-Based Indexes Questions

Will the database always use this index?

No. The optimizer weighs selectivity, estimated costs, statistics, cache state, and the amount of data returned.

What should I verify before production?

Confirm version support, query compatibility, write overhead, build/rollback procedures, and index behavior during backup and recovery.

Official Oracle Database Index Documentation

Check Oracle Database Concepts: Indexes and Index-Organized Tables for release-specific requirements and supported operators.