Obviamente existem métodos de inserção muito mais rápidos e ágeis que o INSERT INTO no PostgreSQL, como o COPY. No entanto, por vezes, na hora de converter sistemas entre outras tarefas, não temos em mão o meio mais otimizado.
E em geral, iremos receber dados no bom e velho comando SQL INSERT.
Um boa estratégia para se adotar nestes casos com o objetivo de acelerar a importação de dados é evitar múltiplos comandos INSERT, em geral, um por registro ou linha de dados, e buscar gerar um grupo de dados por INSERT.
Em alguns casos, a diferença de performance é pequena. Em outros, a diferença é muito significativa. Se a necessidade de importação for de muitos registros, provavelmente valerá a pena utilizar da técnica que apresentamos nesta dica de otimização.
Com isto, a dica que fica é:
De
INSERT INTO tabela (campo1, campo2, ..., campoX) VALUES (valor1, valor2, ..., valorX); INSERT INTO tabela (campo1, campo2, ..., campoX) VALUES (valor1, valor2, ..., valorX); ... INSERT INTO tabela (campo1, campo2, ..., campoX) VALUES (valor1, valor2, ..., valorX);
Para algo como:
INSERT INTO tabela (campo1, campo2, ..., campoX) VALUES (valor1, valor2, ..., valorX), (valor1, valor2, ..., valorX),(valor1, valor2, ..., valorX),(valor1, valor2, ..., valorX) ... (valor1, valor2, ..., valorX);