gendesign/tradein-mvp/backend/data/sql/159_houses_fias_idx.sql
bot-backend 67a852caf1
All checks were successful
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI / changes (pull_request) Successful in 10s
feat(tradein/matching): fias_exact tier + estimate fias persist + suggest fias_id contract
2026-07-02 20:49:04 +03:00

26 lines
1.2 KiB
PL/PgSQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- 159_houses_fias_idx.sql
-- Индекс под Tier 0.5 fias_exact матчинга домов (feat/tradein-fias-tier-matching).
--
-- WHY:
-- houses.house_fias_id (ГАР OBJECTGUID, migration 070) теперь заполнен у ~5.1k
-- из 11.8k домов (DaData backfill 2026-07-02). Матчинг-каскад получил новый
-- tier `fias_exact` (services/matching/houses.py) с предикатом
-- `lower(house_fias_id) = lower(:fias)`. Без функционального индекса каждый
-- estimate/scrape делал бы seq-scan по houses.
--
-- SCOPE:
-- Только создание partial functional index. Данные не трогаются.
--
-- IDEMPOTENCY / SAFETY:
-- - BEGIN/COMMIT одной транзакцией.
-- - CREATE INDEX IF NOT EXISTS → повторный прогон no-op (auto-apply strict).
-- - Partial (WHERE house_fias_id IS NOT NULL) — не индексируем ~6.7k NULL-строк.
-- - lower(...) выражение соответствует case-insensitive предикату матчера.
BEGIN;
CREATE INDEX IF NOT EXISTS houses_fias_lower_idx
ON houses (lower(house_fias_id))
WHERE house_fias_id IS NOT NULL;
COMMIT;