Se você inseriu colunas com UUIDs (o que não é exatamente o seu caso) e adiciona à resposta @Dennis (ainda não posso comentar), seja avisado do que usar gen_random_uuid () (requer o módulo PG 9.4 e pgcrypto). muito mais rápido que uuid_generate_v4 ()
=# explain analyze select uuid_generate_v4(),* from generate_series(1,10000);
QUERY PLAN
---------------------------------------------------------------------------------------------------------------------------
Function Scan on generate_series (cost=0.00..12.50 rows=1000 width=4) (actual time=11.674..10304.959 rows=10000 loops=1)
Planning time: 0.157 ms
Execution time: 13353.098 ms
(3 filas)
vs
=# explain analyze select gen_random_uuid(),* from generate_series(1,10000);
QUERY PLAN
--------------------------------------------------------------------------------------------------------------------------
Function Scan on generate_series (cost=0.00..12.50 rows=1000 width=4) (actual time=252.274..418.137 rows=10000 loops=1)
Planning time: 0.064 ms
Execution time: 503.818 ms
(3 filas)
Além disso, é a maneira oficial sugerida de fazer isso
Nota
Se você precisar apenas de UUIDs gerados aleatoriamente (versão 4), considere usar a função gen_random_uuid () do módulo pgcrypto.
Isso reduziu o tempo de inserção de ~ 2 horas para ~ 10 minutos para 3,7M de linhas.