# Database Index Review

Last updated: 2026-06-24

Migration `0027_database_integrity_readiness` creates `database_index_reviews` and seeds the first high-volume path reviews. The table is the evidence register for index decisions.

## Review Cadence

- High-volume money movement paths: every 90 days.
- Audit, webhook and session cleanup paths: every 90 days.
- After major product launches or traffic-shape changes.
- After PostgreSQL version upgrades or query planner changes.

## Required Evidence

Each review should record:

- Query pattern and owning product area.
- Expected and observed volume.
- `EXPLAIN` or `EXPLAIN ANALYZE` evidence reference from staging/preprod.
- Index decision: keep, add, drop or defer.
- Risk level and reason.
- Reviewer and next review date.

## Current Production-Path Indexes

- `transfers_status_created_at_idx`
- `transfers_user_status_created_at_idx`
- `transfers_settlement_due_cover_idx`
- `sepa_provider_report_items_report_processed_idx`
- `inbound_payments_status_created_at_idx`
- `audit_events_type_created_at_idx`
- `audit_events_target_created_at_idx`
- `auth_sessions_active_expiry_idx`
- `card_authorizations_status_created_at_idx`
- `card_issuer_webhook_events_processed_at_idx`
- `crypto_chain_transactions_wallet_status_idx`
- `payment_status_events_status_created_at_idx`

## Guardrails

Do not drop an index used by settlement, ledger, auth, webhook, audit or compliance paths without a rollback plan and staged performance evidence.
