После чтения справочного документа PostgreSQL на COPY
я не нашел, как COPY
имеет дело с индексами. Что именно происходит при копировании данных из файла в таблицу, когда в таблице уже есть индексы. Интересно, будут ли эти индексы сначала уничтожены автоматически, а затем повторно созданы после загрузки или нет?
Существует еще одна страница в руководстве под названием « Заполнение базы данных», которая занимается этим вопросом. Его совет:
Если вы загружаете только что созданную таблицу, самым быстрым методом является создание таблицы, загрузка данных таблицы с помощью
COPY
, а затем создание любых индексов, необходимых для таблицы. Создание индекса по уже существующим данным происходит быстрее, чем обновление по мере того, как загружается каждая строка.
Все ясно, да? Но прочитайте страницу, для вас, вероятно, больше.
В настоящее время COPY не делает ничего особенного с индексами.
Если вы должны вставить в индексированную таблицу, разница между КОПИЕМ и пакетом INSERT невелика.
Поэтому, если вы не можете отбросить индексы, просто используйте любую команду, наиболее удобную с учетом текущего формата данных.