Pregunta

After reading the PostgreSQL reference doc on COPY, I did not find how COPY deals with indexes. What exactly happens when COPYing data from a file into a table when the table already has indexes. I wonder if these indexes will be destroyed automatically first and then re-created after the loading or not?

¿Fue útil?

Solución

There is another page in the manual called Populating a Database that deals with that question. Its advice:

If you are loading a freshly created table, the fastest method is to create the table, bulk load the table's data using COPY, then create any indexes needed for the table. Creating an index on pre-existing data is quicker than updating it incrementally as each row is loaded.

All clear, right? But read the page, there's probably more for you.

Otros consejos

COPY currently does nothing special with indexes.

If you must insert into an indexed table, there is not much of a performance difference between COPY and a batched INSERT.

So if you can't drop the indexes then just use whichever command is most convenient given the current format of the data.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top