Table partitioning in PostgreSQL databases
Partitioning involves splitting large tables into smaller ones according to some attribute (like time ranges, regions, or even user ID groups). This is a logical step, and it can significantly increase your performance. But a botched implementation can have unintended effects, thus losing potential benefits, and turning your work with the database into a complete nightmare (more on this later).
Source: A slice of life: table partitioning in PostgreSQL databases, an article by Ruslan Shakirov.