Таблица событий разбита по времени, но запрос по
session_id обращается ко всем партициям. Локальный индекс ускоряет поиск в каждой, однако их число не сокращает: при сотне партиций это похоже на запрос к сотне таблиц.Приём применим, когда события только добавляются, ID сессий растут последовательно, а сессии обычно длятся минуты или часы. Тогда ID связан со временем: для каждой партиции можно задать его диапазон через
CHECK. Оптимизатор исключит партицию, где нужного ID быть не может. В примере для ID 1000 сканируется только партиция 2025 года вместо двух.В обстоятельной статье Хаки Бениты разобраны локальные и глобальные индексы, выбросы и схема «пробелы и острова». Материал пригодится тем, кто выбирает ключ разбиения таблицы: проверьте связь данных и план через
EXPLAIN, прежде чем закреплять диапазоны ограничениями.
