ClickHouse Denormalization is not the answer to slow JOINs
glassflow.dev
glassflow.dev
One thing that we do use to good effect which I didn't see mentioned is computed columns, or materialized columns as I see they're called in ClickHouse, for optimized indexing. Though I guess that's already a staple.
Anyway, seems like a nice and thorough article.