Запрос SELECT * к таблице событий в ClickHouse идёт минуту, а с двумя столбцами — секунду
Таблица событий в ClickHouse — 2 миллиарда строк и 120 столбцов. Запрос SELECT * FROM events WHERE event_date = today() LIMIT 100 выполняется долго и читает гигабайты, а SELECT user_id, event_type FROM events WHERE ... — почти мгновенно.
Почему разница такая большая?
- Данные хранятся по столбцам, и каждый столбец читается отдельно
- LIMIT в ClickHouse применяется только после чтения всей таблицы
- Звёздочка отключает использование индексов
- ClickHouse кэширует только запросы с явными столбцами
