надо раз в N дней создавать новый индекс
ERROR: CREATE INDEX CONCURRENTLY cannot run inside a transaction block при вызове EXECUTE ddl;
решил пробелму так:
ddl := $$
CREATE INDEX CONCURRENTLY .....
$$;
PERFORM dblink_exec('dbname=' || current_database() ||' user=postgres ',ddl);
вопрос, наскольк плохо испоьзовать dblink_exec ? не просто так-же они не дают вызывать CREATE INDEX CONCURRENTLY
Но не хотелось писать на баше логику, хотел ограничится чисто plpgsql.
просто sql скрипт не подходит, потмоу что мне надо динамически генрировать WHERE условие дялиндекса:
format(' ... WHERE message_timestamp > %L::timestamp with time zone ;', last_date);
По сути у меня индекс покарывает последние два месяца данных, для быстрых запросов, остальное идет по дургому индексу.
такой-себе недо-шардинг.
в общем, если кому интесно, запуск срипта на базе postgres и выполенение создания индексов на рабочей базе через dblink сработало! 😊
Обсуждают сегодня