2013-11-19 3 views
0

Я понимаю, что скорость работы обновления в PostgreSQL не соответствует моим ожиданиям, особенно когда я обновляю столько строк одновременно, сказал 10K строк данных. Есть ли быстрая альтернатива UPDATE? как использование быстрой операции COPY to INSERT.PostgreSQL: альтернатива UPDATE (как COPY to INSERT)

Спасибо прежде.

+0

Являются ли поля в индексе where вашего обновления не проиндексированными, вы обновляете много проиндексированных полей или знаете какую-либо другую причину медлительности? Трудно узнать, где узкое место с такой небольшой информацией. –

+0

Поля индексируются, и мы знаем, что мы используем функцию, если данные новые, они будут вставлены, иначе мы обновим большинство полей. Вот почему я думаю использовать другую альтернативу UPDATE, как операцию COPY to INSERT, потому что она быстрее. – user430926

ответ

0

В отличие от INSERT, UPDATE можно оптимизировать для больших записей. У меня, конечно, были случаи, когда я обновлял десятки тысяч записей и имел это достаточно быстро. Нормальные предостережения для массовых операций применяются, конечно:

  1. Индексация не всегда помогает и в самом деле не поможет, если обновление всей таблицы. Вы можете быстрее найти индексы, обновить и заново создать их.

  2. НЕ СУЩЕСТВУЕТ БОЛЬШИНСТВО МЕДИЦИНСКИХ МЕРТВЫХ ПОЛЬЗОВАТЕЛЕЙ НА БОЛЬШИЕ НАБОРЫ. Найдите способ заставить вещи работать с левым соединением.

  3. Если применяются нормативные правила работы (см. Планы запросов и т. Д.).

Смежные вопросы