DT
Есть ещё вариант, конечно, делать только одну строчку на клиента, эвенты сделать массивами и обновлять строчку через Replacing или Aggregating. На самом деле у нас схема примерно такая и есть сейчас. Клиент всегда один, а собираем все его эвенты (их немного, буквально до 10, соответственно массивы тоже небольшие) и в ReplacingMergeTree храним.
Интересует именно быстрота поиска. Будет быстрее смотреть на заранее составленный массив в колонке с типом array или составлять массив через groupArray и искать уже в нем?