не работает индекс по таблице

From: Genix <genix(at)list(dot)ru>
To: pgsql-ru-general <pgsql-ru-general(at)postgresql(dot)org>
Subject: не работает индекс по таблице
Date: 2005-10-22 13:57:40
Message-ID: 435A4554.6060103@list.ru
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-ru-general

Приветствую!

Имеем несколько действий:

drop table t1;

select post_addresses_id into t1 from persons where $условие;

create index t1_ on t1 (post_addresses_id);

select count(*) from addresses where
exists ( select addresses_id from t1 where
addresses.addresses_id=t1.post_addresses_id)

на самом деле, в последнем запросе вместо select count(*) нужно делать
удаление, но для проверки я использовал именно этот вариант, ибо оба они
выполняются одного порядка времени.

так вот, если все написано так как есть, то последний запрос выполняется
около 8 секунд (у меня небольшой, тестовый набор данных) и по обоим
таблицам идет seq_scan.

если же поменять местами две таблицы, т.е.:

select count(*) from t1 where
exists ( select addresses_id from addresses where
addresses.addresses_id=t1.post_addresses_id)

то запрос пробегается за 40 мс и по таблице addresses подхватывается
индекс. Но ведь удалять-то надо именно из addresses, и такой вариант
условия exists уже не подходит $)

решение было найдено:
set enable_seqscan=false;

вот только возник вопрос, правильно ли что PostgreSQL так сильно ошибается?

--
У каждого в башке свои тараканы...

Responses

Browse pgsql-ru-general by date

  From Date Subject
Next Message Oleg Bartunov 2005-10-22 17:27:13 Re: Кодировка
Previous Message Maxim Vetrov 2005-10-22 07:49:24 Кодировка