Вопрос

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?

Это было полезно?

Решение

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.

Другие советы

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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top