Repository navigation
perf(db): „Свързани лица“ и самоличността на лицето четат по индекс, не цели таблици - #407
Merged
Merged
Conversation
…не цели таблици Няколко заявки на страниците за лица и на списъка „Свързани лица“ четяха цели таблици при всяко некеширано показване: - Списъкът събираше годините на длъжност от всички декларации, а дружествата и длъжностите на всеки ред — с подзаявка, която четеше целия списък на връзките наново за всеки човек. Сега годините се четат само за хората в списъка, а дружествата и длъжностите се събират веднъж на лице. - Списъкът с роли от регистъра обхождаше всички дружества с договори и преглеждаше материализирания списък на годините за всеки договор. Сега чете от хората към ролите им, а годината проверява по индекса на декларациите. - Пренасочванията и имената, под които лицето е подавало декларации, минаваха през индекса на пространството от имена, т.е. през всички източници; сега стигат до своите редове по ключа. - Миграция 0023 добавя индекси interest_links(eik, status), (person_id, status), (bidder_id, status) и interest_link_observations(timing, reported_year); деплоят я прилага по име, а публикуването на декларациите ги пресъздава на всяко ново поколение. На dev, прочетени редове на заявка (main → клона), при еднакъв резултат: списъкът без филтър 665 хил. → 120 хил., за една институция 315–331 хил. → 9–25 хил.; ролите от регистъра 1,45 млн. → 50 хил., за институция 136–185 хил. → 15–31 хил.; пренасочванията 27,6 млн. → 254 хил. за 150 псевдонима; имената 7,3 млн. → 376 хил. за 40 профила; дейността на лице само от регистъра 56–328 хил. → 0,6–3,8 хил., на тежък профил 744 хил. → 50 хил.; доставчиците на голяма институция 49–60 хил. → 0,9–1,5 хил.; връзките на лице и на фирма с около една трета по-малко.
Test coverage
✅ No workspace dropped below its baseline (tolerance 0.5pp). |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Какво и защо
Няколко заявки на страниците за лица и на списъка „Свързани лица“ четяха
цели таблици при всяко некеширано показване:
дружествата и длъжностите на всеки ред — с подзаявка, която четеше целия
списък на връзките наново за всеки човек. Сега годините се четат само за
хората в списъка, а дружествата и длъжностите се събират веднъж на лице.
преглеждаше материализирания списък на годините за всеки договор. Сега
чете от хората към ролите им, а годината проверява по индекса на
декларациите.
минаваха през индекса на пространството от имена, т.е. през всички
източници; сега стигат до своите редове по ключа.
(person_id, status), (bidder_id, status) и
interest_link_observations(timing, reported_year); деплоят я прилага по
име, а публикуването на декларациите ги пресъздава на всяко ново
поколение.
На dev, прочетени редове на заявка (main → клона), при еднакъв резултат:
списъкът без филтър 665 хил. → 120 хил., за една институция 315–331 хил.
→ 9–25 хил.; ролите от регистъра 1,45 млн. → 50 хил., за институция
136–185 хил. → 15–31 хил.; пренасочванията 27,6 млн. → 254 хил. за 150
псевдонима; имената 7,3 млн. → 376 хил. за 40 профила; дейността на лице
само от регистъра 56–328 хил. → 0,6–3,8 хил., на тежък профил 744 хил. →
50 хил.; доставчиците на голяма институция 49–60 хил. → 0,9–1,5 хил.;
връзките на лице и на фирма с около една трета по-малко.
Свързан issue
Няма отделен issue — част от серията поправки по тръбопроводите на dev/stage и цената на D1.
Как е тествано
pnpm lint,pnpm typecheck,pnpm test -- --coverage,pnpm check:coverage,pnpm check:fake-d1,pnpm check:docs, script и CACBG/ТР тестове) — зелен за клона поотделно и за цялата серия от 12 заедно върхуmain.Чеклист
Co-Authored-By:trailer, който сочи към агентmidt-bg/sigma:mainот вътрешен maintainer branchpnpm typecheck,pnpm testиpnpm lintминават.env*или.dev.vars🤖 Generated with Claude Code
https://claude.ai/code/session_013pBk7JaPgpsgELYGZgnkwt