Si sucede que debe insertar columnas con UUID (que no es exactamente su caso) y agregar a la respuesta @Dennis (aún no puedo comentar), tenga en cuenta que usar gen_random_uuid () (requiere PG 9.4 y el módulo pgcrypto) es (a lot) más 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)
Además, es la forma oficial sugerida de hacerlo
Nota
Si solo necesita UUID generados aleatoriamente (versión 4), considere usar la función gen_random_uuid () del módulo pgcrypto en su lugar.
Esto redujo el tiempo de inserción de ~ 2 horas a ~ 10 minutos para 3.7M de filas.