# Derby's cost-based optimization

The query optimizer makes cost-based decisions to determine:

- Which index (if any) to use on each table in a query (see About the optimizer's choice of access path)
- The join order (see About the optimizer's choice of join order)
- The join strategy (see About the optimizer's choice of join strategy)
- Whether to avoid additional sorting (see About the optimizer's choice of sort avoidance)
- Automatic lock escalation (see About the system's selection of lock granularity)
- Whether to use bulk fetch (see About the optimizer's selection of bulk fetch)

- About the optimizer's choice of access path
- About the optimizer's choice of join order
- About the optimizer's choice of join strategy
- About the optimizer's choice of sort avoidance
- About the system's selection of lock granularity
- About the optimizer's selection of bulk fetch

Parent topic: Performance and optimization
Related concepts
Index use and access paths
Joins and performance