#ClickHouse_ну_ёпт_опять

Особенности оптимизации ClickHouse. (Автор @alexxxxxxela)

Покажу один прикол с кликом и велик шанс, что это пригодится, если будете трогать большие таблицы или что-либо оптимизировать.

Вот основные моменты: есть большая таблица на >1kkk записей ключевое поле chrt_id UInt64, order by chrt_id

Нужно выполнить операцию тяжелую, поэтому нужно брать кусками данные.

Куски берем через разделение всех chrt_id на равные промежутки. Это делается через quantiles. получаем числа [417248015.8, 642524841, 880088631, 1249379586.8]

ну и делаем запрос:

select chrt_id, col2, col3 from table where chrt_id < 417248015.8 and тяжелое условие

Встает вопрос, какая у этого запроса проблема?

Ответ:

Не используется индекс сортировки из-за неприведенных типов данных в фильтрации.

Столбец приводится к типу float для сравнения, поэтому запрос читает каждую строку, чтобы сперва сделать каст и затем сравнить.

Если убрать дробную часть, тогда условие будет корректно и будет читаться только 1/5 строк