Merge pull request 'feat(tradein/db): дроп дублирующего listings_geom_idx (#2997)' (#3130) from feat/2997-drop-listings-geom-idx into main
Some checks failed
Deploy Trade-In / build-backend (push) Blocked by required conditions
Deploy Trade-In / deploy (push) Blocked by required conditions
Deploy Trade-In / deploy-status (push) Blocked by required conditions
Deploy Trade-In / changes (push) Successful in 14s
Deploy Trade-In / build-frontend (push) Has been skipped
Deploy Trade-In / perimeter-smoke (push) Blocked by required conditions
Deploy Trade-In / build-browser (push) Has been skipped
Deploy Trade-In / test (push) Has been cancelled

This commit is contained in:
bot-backend 2026-08-27 10:47:30 +00:00
commit 063485e0e2

View file

@ -0,0 +1,26 @@
-- 273_drop_listings_geom_idx.sql
-- #2997: снять дублирующий geometry-индекс listings — geography-двойник несёт всю работу.
--
-- Критерий дропа (размечен 21.08, датирован окном до 28.08) выполнен с запасом,
-- окно склеено из двух половин (переезд 25.08 разорвал счётчики):
-- * замороженная база Beget (вся история до 25.08 17:23):
-- listings_geom_idx 4 116 сканов / 115 МБ
-- listings_geom_geog_idx 217 712 сканов / 212 МБ (53×)
-- прирост geom за последние 4 дня Beget (+164) — вырожденные планы
-- `geom IS NOT NULL` (bitmap без пространственного условия), тот же паттерн,
-- который у houses устранил geog-индекс #3020;
-- * живая база Poincare (25.08→27.08): geom — 0 сканов, geog — работает;
-- * EXPLAIN горячего запроса эстиматора (радиус через geography) — идёт по
-- listings_geom_geog_idx, geom-индекс в плане не участвует;
-- * свип кода: ни одного пространственного оператора по голому listings.geom
-- (оба ST_DWithin в geometry-space бьют по cadastre_buildings.geom,
-- listings там внешняя сторона).
--
-- Экономия: 115 МБ + минус одна индексная запись на каждый из 20.86 млн
-- не-HOT апдейтов listings; на московском объёме — кратно больше (#2997).
--
-- CONCURRENTLY и без BEGIN — по образцу 270: раннер исполняет по операторам,
-- CONCURRENTLY нельзя в транзакции, lock-гейт эту форму не требует прикрывать.
-- Идемпотентно (IF EXISTS). Восстановление при неожиданном регрессе планов:
-- CREATE INDEX CONCURRENTLY listings_geom_idx ON listings USING GIST (geom);
DROP INDEX CONCURRENTLY IF EXISTS listings_geom_idx;