Hello.
It is more efficiently to store low cardinality fields as integers or enums than as strings.
In terms of performance, it is much more efficiently. In terms of database size, it it just slightly more efficiently.
ClickHouse does compression with lz4 library by default, that is implementation of LZ77 algorithm, which do substring matching and works somewhat like dictionary.
But to process data, ClickHouse decompresses it first and works on decompressed data. It means, that GROUP BY, comparison and so on, for low cardinality string fields, work on strings rather than integers, that is worse.
There are Enum8, Enum16 data types, which works like integers internally and looks like strings to user.
https://clickhouse.yandex/reference_en.html#Enum