prop/priv/repo/migrations/20260405001517_add_contacts_pos1_partial_index.exs
Graham McIntire 16883591b4
Database performance fixes and async backfill enqueue
- Fix score_pressure crash on nil pressure_mb (coastal HRRR points)
- Set 10-min timeout on grid score upsert transaction (was :infinity)
- Single DELETE for prune_old_scores instead of N queries in a loop
- Remove dead load_hrrr_refractivity that loaded 95k rows into nil map
- Pass selected_time to point_detail to skip latest_valid_time sub-query
- Batch station existence checks (1 query per path point, not per station)
- Batch solar index upserts via insert_all in chunks of 500
- Batch backfill_distances via single UPDATE FROM VALUES statement
- Add is_grid_point boolean + partial index to hrrr_profiles (replaces
  non-sargable modular arithmetic filter on every weather map query)
- Add partial index on contacts(qso_timestamp) WHERE pos1 IS NOT NULL
- Move backfill enqueue to Oban worker so UI returns immediately
2026-04-04 19:19:18 -05:00

10 lines
265 B
Elixir

defmodule Microwaveprop.Repo.Migrations.AddContactsPos1PartialIndex do
use Ecto.Migration
def change do
create index(:contacts, [:qso_timestamp],
where: "pos1 IS NOT NULL",
name: :contacts_pos1_not_null_idx
)
end
end