Подтвердить что ты не робот

Возможно ли временно отключить индекс в Postgres?

У меня есть один индекс в таблице, который я бы хотел временно отключить, но я не могу найти документацию, предполагающую, что это возможно.

Причина. У меня есть индекс, который может вызвать проблемы в запросах, не связанных с тем, который был разработан для ускорения. Это новый индекс, и система в целом кажется более медленной с момента ее появления. Я просто хочу быть в состоянии надежно устранить его как виновника, и это кажется самым простым способом, также приветствуются другие предложения по решению, а также лучшие предложения по поводу вопросов.

4b9b3361

Ответ 1

Вы можете совать системный каталог, чтобы отключить индекс:

update pg_index set indisvalid = false where indexrelid = 'test_pkey'::regclass

Это означает, что индекс не будет использоваться для запросов, но будет по-прежнему обновляться. Это один из флагов, используемых для одновременного построения индекса. Обратите внимание, что я только сделал быстрый тест, чтобы увидеть, обновляется ли индекс по-прежнему, caveat emptor.

Ответ 2

begin;
drop index foo_ndx;
explain analyze select * from foo;
rollback;

Я не думаю, что есть способ отключить только один, хотя вы можете сделать это в транзакции, чтобы сделать восстановление из нее простым. Вы также можете отключить indexscan для отключения всех индексов.

Кроме того, убедитесь, что вы выполняете explain analyze в своих запросах.