У меня около 700 таблиц в моей БД. Когда я запускаю приведенный ниже скрипт, это занимает почти 1 час.Как я могу оптимизировать этот запрос?
База данных: Postgres
DO $$
DECLARE
tables_list CURSOR FOR
select distinct t_name, t_schema from information_schema.columns
where column_name = 'deleted_flag'
and t_schema='customer' and t_name not like 'v_%';
BEGIN
FOR t_record IN tables_list LOOP
EXECUTE 'update ' || t_record.table_schema || '.' || t_record.table_name || ' set deleted_flag=false';
END LOOP;
end;
$$;
В конце концов, все таблицы в этой схеме должны иметь это поле delete_flag как ложное.Мне приходится часто запускать этот скрипт в производственной среде.Благодарен, если кто-то может помочь, как оптимизировать этот скрипт.
Как вы думаете, если добавить проверку в предложении where,
EXECUTE 'update ' || t_record.table_schema || '.' || t_record.table_name || ' set deleted_flag=false where deleted_flag=true';
время выполнения будет меньше?