Avanzado
20 min de lecturaParticiones
Divide tablas grandes en partes más pequeñas y manejables
El particionamiento divide una tabla grande en fragmentos más pequeños (particiones) para mejorar el rendimiento y la gestión.
Tipos de particiones
#
Partición por rango
sql
1CREATE TABLE ventas (2 id SERIAL,3 fecha DATE NOT NULL,4 total DECIMAL NOT NULL5) PARTITION BY RANGE (fecha);6 7CREATE TABLE ventas_2024_q1 PARTITION OF ventas8 FOR VALUES FROM ('2024-01-01') TO ('2024-04-01');9 10CREATE TABLE ventas_2024_q2 PARTITION OF ventas11 FOR VALUES FROM ('2024-04-01') TO ('2024-07-01');#
Partición por lista
sql
1CREATE TABLE usuarios (2 id SERIAL,3 nombre TEXT,4 pais TEXT NOT NULL5) PARTITION BY LIST (pais);6 7CREATE TABLE usuarios_es PARTITION OF usuarios8 FOR VALUES IN ('España', 'México', 'Argentina');9 10CREATE TABLE usuarios_us PARTITION OF usuarios11 FOR VALUES IN ('USA', 'Canadá');#
Partición por hash
sql
1CREATE TABLE logs (2 id SERIAL,3 mensaje TEXT,4 nivel TEXT5) PARTITION BY HASH (id);6 7CREATE TABLE logs_0 PARTITION OF logs FOR VALUES WITH (MODULUS 4, REMAINDER 0);8CREATE TABLE logs_1 PARTITION OF logs FOR VALUES WITH (MODULUS 4, REMAINDER 1);9CREATE TABLE logs_2 PARTITION OF logs FOR VALUES WITH (MODULUS 4, REMAINDER 2);10CREATE TABLE logs_3 PARTITION OF logs FOR VALUES WITH (MODULUS 4, REMAINDER 3);Ventajas
Sintaxis
Sintaxis
sql
1CREATE TABLE nombre (2 columnas3) PARTITION BY {RANGE | LIST | HASH} (columna);4 5CREATE TABLE particion PARTITION OF nombre6 FOR VALUES FROM (inicio) TO (fin);Ejemplos
Partición por fecha
Ventas particionadas por trimestre
Ejemplo
sql
1CREATE TABLE ventas_2024 (2 id SERIAL,3 fecha DATE,4 total DECIMAL5) PARTITION BY RANGE (fecha);6 7CREATE TABLE ventas_q1 PARTITION OF ventas_20248 FOR VALUES FROM ('2024-01-01') TO ('2024-04-01');9 10INSERT INTO ventas_2024 (fecha, total)11VALUES ('2024-02-15', 1500);12 13SELECT * FROM ventas_q1;Resultado:
| id | fecha | total | |----|------------|-------| | 1 | 2024-02-15 | 1500 |