Я хотел бы знать разницу в производительности в обновлении таблицы, используя следующий метод:Производительность на обновления с помощью курсора в PostgreSQL
UPDATE films SET kind = 'Dramatic' WHERE CURRENT OF c_films;
или вроде этого:
UPDATE films SET kind = 'Dramatic' WHERE unique_indexed_int_column = 3000;
Кто-нибудь испытал это или знаете, как работают обновления с помощью курсоров, чтобы они могли прокомментировать это?
РЕДАКТИРОВАТЬ: Я сейчас проверил это и обнаружил, что на самом деле это происходит примерно на треть быстрее, чтобы сделать последний пример. Я побежал каждый из запросов 100000 раз и приурочил разницу. Я использовал psycopg2 с помощью серверных курсоров для связи с Postgres. Далее я буду исследовать, могу ли я найти, что это не всегда так.
Пожалуйста, ознакомьтесь с удивительным эталоном между этими двумя: http://stackoverflow.com/questions/4776127/postgres-surprising-performance-on-updates-using-cursor – David
Это не удивительно, но, возможно, хорошо сформулируйте мой ответ. Единственный случай, когда обновление курсором делает ощущение, когда вы хотите прочитать дату, которую вы обновляете в первую очередь. В любом другом сценарии, очевидно, чтение, а затем обновление происходит не быстрее, чем обычно, медленнее (тем более, что между db и программой есть дополнительная связь), чем обновление напрямую. (Если бы это было не так, БД была бы глупо не всегда читать и писать потом в таком случае, чтобы получить производительность ...) –