Looks like apples to oranges - ClickHouse was creating new table while PostgreSQL was expanding and updating existing table which is naturally slower, and it was done 3 times instead of updating all 3 columns in the same operation. It is about the worst possible way to do it. For equal comparison the PostgreSQL test should have been running creation of new table too - ie. the same "create table as (select *, 3 enrichment columns from open_cell_towers)"