TGViewer
Сохранёнки программиста Сохранёнки программиста @prog_stuff · 6.52K subscribers
Post #3036 159
Как отсекать партиции PostgreSQL при поиске не по ключу разбиения

Таблица событий разбита по времени, но запрос по session_id обращается ко всем партициям. Локальный индекс ускоряет поиск в каждой, однако их число не сокращает: при сотне партиций это похоже на запрос к сотне таблиц.

Приём применим, когда события только добавляются, ID сессий растут последовательно, а сессии обычно длятся минуты или часы. Тогда ID связан со временем: для каждой партиции можно задать его диапазон через CHECK. Оптимизатор исключит партицию, где нужного ID быть не может. В примере для ID 1000 сканируется только партиция 2025 года вместо двух.

В обстоятельной статье Хаки Бениты разобраны локальные и глобальные индексы, выбросы и схема «пробелы и острова». Материал пригодится тем, кто выбирает ключ разбиения таблицы: проверьте связь данных и план через EXPLAIN, прежде чем закреплять диапазоны ограничениями.
More from @prog_stuff
  1. Sep 27, 2026Почему одинаковый nvJPEG2000 даёт разные результаты в тестах Обстоятельный разбор показыва…
  2. Sep 26, 2026Go 1.27: что проверить перед обновлением сервисов Практический обзор Go 1.27 отделяет уско…
  3. Sep 26, 2026Как Uber переписала шардирование Schemaless на Go без простоя Подробный технический разбор…
  4. Sep 25, 2026Как агенты тестируют код и почему одного промпта мало В исследовании агенты реализовывали…
  5. Sep 25, 2026Как устроена база данных: собираем клон SQLite на C Это обстоятельная серия для тех, кому…
  6. Sep 25, 202630 паттернов распределённых систем Это карта готовых решений для систем, где узлы отказыва…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →