большом запросе, вы можете разбить процесс на несколько более мелких пакетов. Например, обновляйте записи пачками по 1000, 5000 и так далее.
batch_size=1000
count=$(psql -h "$db_host" -p "$db_port" -d "$db_name" -U "$db_user" -t -c "SELECT COUNT(*) FROM \"$table\" WHERE \"$column\" ~ '$old_url(\\W|$)';")
for ((offset=0; offset<count; offset+=batch_size)); do
psql -h "$db_host" -p "$db_port" -d "$db_name" -U "$db_user" -c "
UPDATE \"$table\" SET \"$column\" = REPLACE(\"$column\", '$old_url', '$new_url')
WHERE \"$column\" ~ '$old_url(\\W|$)' LIMIT $batch_size OFFSET $offset;
"
done
кто нибудь делал что-то подобное?
Да сплошь и рядом люди думать не хотят и генератор случайных текстов пытаются спрашивать.
Например, оно предлагает неотносящуюся к делу норкоманию.
Это обычный GPT-бред (от которого станет намного хуже, в Вашем случае). Тут, кстати, модераторы как-то грозились банить за копипасты ботов, вроде бы, так что Вы поосторожнее с этим. ;)
Собственно, я предложу ровно наоборот — переделать это на один запрос на все 6к значений (вместо 6000 запросов). Тогда докидывать лишних индэксов в базу не потребуется.
Обсуждают сегодня