Me pregunto cuál sería la forma más eficiente de eliminar grandes cantidades de filas de PostgreSQL, este proceso sería parte de una tarea recurrente todos los días para importar datos en masa (un delta de inserciones + eliminaciones) en una tabla. Podría haber miles, potencialmente millones de filas para eliminar.
Tengo un archivo de claves principales, una por línea. Las dos opciones en las que estaba pensando estaban en la línea de abajo, pero no conozco / entiendo lo suficiente de lo interno de PostgreSQL para tomar una decisión informada que sería lo mejor.
- Ejecute una
DELETEconsulta para cada fila en el archivo, con una simpleWHEREclave primaria (o agrupe las eliminaciones en lotes paranusar unaIN()cláusula) - Importe las claves primarias en una tabla temporal con el
COPYcomando y luego elimínelas de la tabla principal con una combinación
¡Cualquier sugerencia será muy apreciada!