Разбейте таблицу на диапазонные партиции по дате, чтобы partition pruning исключал ненужные дни. Это уменьшает объём чтения даже без индекса внутри каждой партиции.
Как ускорить фильтрацию аналитических данных по дням без индексов, предварительно подготовив таблицу средствами PostgreSQL?
Разбейте таблицу на диапазонные партиции по дате, чтобы partition pruning исключал ненужные дни. Это уменьшает объём чтения даже без индекса внутри каждой партиции.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Разбейте таблицу на диапазонные партиции по дате, чтобы partition pruning исключал ненужные дни. Это уменьшает объём чтения даже без индекса внутри каждой партиции.
Условие запроса должно позволять определить границы, например created_at >= start AND created_at < end. Индексы и партиционирование решают разные задачи: выбранная партиция без индекса всё равно может сканироваться целиком. Размер партиций выбирают по объёму и сроку хранения; тысячи слишком мелких секций имеют накладные расходы. Если нужны только итоги за день, дополнительный выигрыш даст заранее рассчитанная дневная агрегация.