Gostaria de saber qual seria a maneira mais eficiente de excluir um grande número de linhas do PostgreSQL, esse processo faria parte de uma tarefa recorrente todos os dias para importar dados em massa (um delta de inserções + exclusões) em uma tabela. Pode haver milhares, potencialmente milhões de linhas para excluir.
Eu tenho um arquivo de chaves primárias, uma por linha. As duas opções em que eu pensava estavam ao longo das linhas abaixo, mas não conheço o suficiente dos internos do PostgreSQL para tomar uma decisão informada que seria melhor.
- Execute uma
DELETE
consulta para cada linha do arquivo, com umaWHERE
chave primária simples (ou agrupe as exclusões em lotes den
usando umaIN()
cláusula) - Importe as chaves primárias para uma tabela temporária usando o
COPY
comando e exclua da tabela principal usando uma junção
Qualquer sugestão será muito apreciado!