Автоматическое удаление индексов в Postgresql

Рейтинг: 0Ответов: 1Опубликовано: 20.02.2023

Можно ли находить и автоматически чистить индексы в бд?

По типу процедура которая видит что reltuples,idx_tup_read,idx_scan пустые, дальше берет имя индекса и как-то удаляет его...

Ответы

▲ 0
do $$
declare
    rec record;
begin
    for rec in
        select relnamespace::regnamespace as namespace, relname
        from pg_index i
        join pg_class c on c.oid = i.indexrelid
        where not indisvalid
    loop
        execute format('drop index %s.%s', rec.namespace, rec.relname);
        -- optionally:
        -- raise notice '%', format('drop index %s.%s', rec.namespace, rec.relname);
    end loop;
end $$;