If working with partitioning, be very aware that PostgreSQL optimizer has certain problems with partitions, especially with group functions. If you want speed, everything must be prefixed with partitioning column: indexes, expressions, joins. There is no explicit star schema and creating hash indexes will not buy you much, as a matter of fact, Postgres community is extremely suspicious of the hash indexes and I don't see them widely used.
Having said that, I was able to solve the problems with my speed and partitioning.
Could you elaborate on this, please? What do you mean by 'everythin must be prefixed with partitioning column?'