состояниями аггрегатных функций. Под условия WHERE нет подходящих строк, но попытка обращения к колонке с состоянием деградирует запрос в 10-20 раз. Полечилось заменой на PREWHERE. Вопрос - это баг/фича?
Подробности в gist:
https://gist.github.com/alex-krash/035d32a87fd94be2483055e60ba3a383
Скорее всего это связано с тем, что состояния агрегатных функций становятся "толстыми" значениями, и index_granularity = 8192 для такого случая уже много. Ведь при чтении из таблицы придётся прочитать и десериализовать (восстановить состояния в оперативке) как минимум такое количество строк. Но даже с учётом этого соображения, наблюдаемая скорость гораздо меньше ожидаемой. Попробуйте запустить тяжёлый запрос в цикле с помощью clickhouse-benchmark, и в соседнем терминале посмотреть на sudo perf top.
Обсуждают сегодня