-- Контекст: perf-hunt finding #4 (follow-up эпика #1953) — срезаем -- write-amplification на горячей UPSERT-таблице objective_lots. -- -- objective_lots — append/UPSERT-per-snapshot, очень write-heavy: за 35 дней -- аптайма (pg_stat без reset, prod 2026-06-28) n_tup_ins=1.76M, n_tup_upd=1.39M. -- Каждый INSERT/UPDATE обязан поддерживать ВСЕ индексы таблицы → мёртвый индекс = -- чистый write-amp + место на диске + WAL, ноль пользы для чтения. -- -- Дропаем 3 индекса, у которых pg_stat_user_indexes.idx_scan почти нулевой за весь -- аптайм И в кодовой базе (backend services/api/workers + data/sql views) НЕТ ни -- одного sargable-запроса, который мог бы их использовать. По каждому проверено -- EXPLAIN на prod: планировщик берёт Seq Scan на реальной форме запроса даже при -- наличии индекса (доказывает, что индекс не служит ничему). -- -- ── DROP 1: objective_lots_status_idx ── (idx_scan=8 за 35д, 19 MB) -- Опр.: ON objective_lots(status) WHERE status IS NOT NULL (68_schema_objective.sql:250) -- Единственные потребители status: market_metrics._STOCK_SQL, -- supply_layers, competitors, special_indices — ВСЕ через -- `LOWER(COALESCE(ol.status,'')) = 'продан'`. Обёртка LOWER(COALESCE(...)) -- НЕ sargable против plain B-tree на status → индекс не используется НИКОГДА. -- Bare `status = :x` / `status IN (...)` в коде НЕ встречается (grep пуст). -- Колонка status уже в payload covering-индекса (176_*, INCLUDE) — для проекции -- отдельный индекс тоже не нужен. Триггер истории (166_*) читает NEW.status / -- prev.status построчно (без индекса). -- EXPLAIN prod: `WHERE LOWER(COALESCE(status,''))='продан'` → Parallel Seq Scan. -- -- ── DROP 2: objective_lots_rooms_area_idx ── (idx_scan=7 за 35д, 78 MB) -- Опр.: ON objective_lots(rooms_int, area_pd) WHERE area_pd IS NOT NULL (:252) -- rooms_int / area_pd встречаются только в SELECT-проекциях и внутри CASE-bucket -- выражений (market_metrics, sales_series, analytics) — НЕ как WHERE/ORDER/JOIN -- предикат. Room-bucket фильтр оборачивает обе колонки в CASE → не sargable. -- Никакого `WHERE rooms_int = / IN` или `area_pd >/