Particionamiento de tablas
¿Qué es el particionamiento de tablas en PostgreSQL?
El particionamiento divide una tabla lógica en tablas físicas más pequeñas por rango, lista o hash, para que las consultas y el mantenimiento solo toquen las particiones que necesitan.
Con el particionamiento declarativo, creas una tabla particionada con PARTITION BY y luego agregas particiones que contienen cada una un rango de claves, una lista de valores o un bucket de hash. Las aplicaciones leen y escriben en la tabla padre, y PostgreSQL dirige cada fila a la partición correcta.
La poda de particiones (partition pruning) permite que el planificador omita las particiones que no pueden coincidir con la cláusula WHERE de una consulta. El particionamiento también abarata la eliminación de datos antiguos: borrar o desasociar una partición es mucho más rápido que eliminar sus filas una por una. Los beneficios suelen notarse solo en tablas que de otro modo serían muy grandes.
Ejemplo
El ejemplo crea particiones mensuales por rango y le pregunta a EXPLAIN por las filas de noviembre. Solo aparece measurements_2026_11 en la salida, porque la poda omitió la partición de octubre.
CREATE TABLE measurements (
taken_on date NOT NULL,
value numeric
) PARTITION BY RANGE (taken_on);
CREATE TABLE measurements_2026_10 PARTITION OF measurements
FOR VALUES FROM ('2026-10-01') TO ('2026-11-01');
CREATE TABLE measurements_2026_11 PARTITION OF measurements
FOR VALUES FROM ('2026-11-01') TO ('2026-12-01');
INSERT INTO measurements VALUES ('2026-10-15', 1.5), ('2026-11-02', 2.5);
EXPLAIN SELECT * FROM measurements WHERE taken_on >= '2026-11-01';SQL simple para PostgreSQL 16 o 17 estándar, sin extensiones. Ejecútalo en una base de datos vacía que puedas descartar.
Fuentes
Documentación oficial de PostgreSQL (en inglés).