perf: add missing indexes on lead_requests, suppliers, credit_ledger

New migration 0021 adds 7 indexes for columns used in WHERE clauses
across admin list routes and the worker refill handler:
- lead_requests(lead_type) — for all lead-type filters
- lead_requests(lead_type, status) — compound filter in lead queries
- lead_requests(lead_type, verified_at) — refill eligibility queries
- lead_requests(country) — country filter in lead results
- suppliers(tier) — tier filter in supplier admin list
- suppliers(claimed_by) — claimed/unclaimed filter
- credit_ledger(supplier_id) — SUM(delta) balance aggregation

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Deeman
2026-02-24 19:32:15 +01:00
parent 8a6fd61432
commit ef7fe6e079

View File

@@ -0,0 +1,41 @@
"""Add missing indexes identified in performance review.
Columns used in WHERE clauses across admin and worker routes that
lacked indexes and would cause full table scans as the tables grow.
"""
def up(conn) -> None:
# lead_requests: filtered by lead_type, status, verified_at, country
conn.execute(
"CREATE INDEX IF NOT EXISTS idx_lead_requests_lead_type"
" ON lead_requests(lead_type)"
)
conn.execute(
"CREATE INDEX IF NOT EXISTS idx_lead_requests_type_status"
" ON lead_requests(lead_type, status)"
)
conn.execute(
"CREATE INDEX IF NOT EXISTS idx_lead_requests_type_verified"
" ON lead_requests(lead_type, verified_at)"
)
conn.execute(
"CREATE INDEX IF NOT EXISTS idx_lead_requests_country"
" ON lead_requests(country)"
)
# suppliers: filtered by tier and claimed_by in admin list + worker refill
conn.execute(
"CREATE INDEX IF NOT EXISTS idx_suppliers_tier"
" ON suppliers(tier)"
)
conn.execute(
"CREATE INDEX IF NOT EXISTS idx_suppliers_claimed_by"
" ON suppliers(claimed_by)"
)
# credit_ledger: balance queries sum delta grouped by supplier_id
conn.execute(
"CREATE INDEX IF NOT EXISTS idx_credit_ledger_supplier"
" ON credit_ledger(supplier_id)"
)