26 lines
1.2 KiB
PL/PgSQL
26 lines
1.2 KiB
PL/PgSQL
-- 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;
|