Skip to content

WTEL-9816: Optimize LastBridged call history query - #360

Merged
vlad-marusyk-wt merged 1 commit into
mainfrom
fix/WTEL-9816/last-bridged-query-optimization
Aug 4, 2026
Merged

WTEL-9816: Optimize LastBridged call history query#360
vlad-marusyk-wt merged 1 commit into
mainfrom
fix/WTEL-9816/last-bridged-query-optimization

Conversation

@vlad-marusyk-wt

Copy link
Copy Markdown
Contributor

Проблема

Запит елемента LastBridge у SqlCallStore.LastBridged матеріалізував усі дзвінки номера за вікно пошуку: до кожного рядка-кандидата виконувались джойни cc_queue і cc_member_attempt_history, усе подвійно сортувалось і лише потім бралось limit 1. Вартість запиту росла пропорційно періоду пошуку, при вікні 48 годин це створювало суттєве навантаження на БД.

Вирішення

Запит перебудовано: спочатку внутрішній підзапит з limit 1 знаходить єдиний потрібний дзвінок через trgm-індекси номера, і тільки потім до нього добираються деталі. Сортування order by created_at + interval '0' desc не дає планувальнику обрати деградуючий план з обходом часового індексу, тому вартість запиту не залежить від довжини вікна.

Зміни

  • Перебудовано SQL у LastBridged (store/pg_store/call_store.go): пошук рядка винесено у внутрішній підзапит з limit 1 і вузьким списком колонок
  • Джойн cc_member_attempt_history замінено на left join lateral ... limit 1, обидва джойни тепер виконуються один раз для фінального рядка
  • Прибрано дубльоване сортування за текстовим to_char(created_at)

@vlad-marusyk-wt
vlad-marusyk-wt merged commit 95e60de into main Aug 4, 2026
11 of 13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants