perf(sql): покрывающий индекс под offer-trend §4.3 — 6.8с → 1.1с (миграция 186) #2331

Merged
bot-backend merged 2 commits from feat/offer-trend-covering-index into main 2026-07-03 22:26:30 +00:00
Showing only changes of commit 366d06dcbd - Show all commits

View file

@ -50,12 +50,12 @@
-- бы годиться для будущих is-sold-agnostic чтений, а выигрыш поверх price-partial
-- мал — Index-Only и так снимает heap-походы.
--
-- ОЖИДАЕМЫЙ ЭФФЕКТ (гипотеза, проверяется post-deploy — индекс на проде ещё не
-- создан): внутренний `Index Scan using objective_lots_history_lot_idx` + heap
-- ЭФФЕКТ (прод-верифицирован 2026-07-04: индекс УЖЕ создан руками CONCURRENTLY
-- до мержа + зарегистрирован в _schema_migrations, деплой = no-op): внутренний `Index Scan using objective_lots_history_lot_idx` + heap
-- fetch → `Index Only Scan using objective_lots_history_offer_trend_idx`,
-- Heap Fetches ≈ 0, Buffers на history-узле падают с ~590k до ~десятков k,
-- Execution с ~6.8 s до субсекунды на этом же центре. Post-deploy verify —
-- команда в ответе воркера (EXPLAIN ANALYZE того же `hist`).
-- Execution 6789 мс → 1072 мс (6.3×) на том же центре — подтверждено живым
-- EXPLAIN ANALYZE после создания.
--
-- ── РАЗМЕР / ВРЕМЯ BUILD ─────────────────────────────────────────────────────
-- Таблица objective_lots_history: 2 245 510 строк, 538 MB total (282 MB heap,