Com PostgreSQL da para particionar tabelas, mas tendo índices bem criados já resolve também.
Tenho uma base de CNPJ no PostgreSQL tbm e no Firebird 5.0, são enormes e com a estrutura e índices corretos já ficam rápidoa.
O que eu posso te indicar é ter o mínimo de relacionamentos possíveis, joins com muitos registros assim fica lento.
Se quiser compartilhar acesso ou estrutura da base, podemos te ajudar