Можно ли временно отключить индекс в Postgres? - PullRequest
39 голосов
/ 27 мая 2011

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

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

Ответы [ 2 ]

58 голосов
/ 27 мая 2011

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

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

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

25 голосов
/ 27 мая 2011
begin;
drop index foo_ndx;
explain analyze select * from foo;
rollback;

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...