не работает индекс по таблице
От | Genix |
---|---|
Тема | не работает индекс по таблице |
Дата | |
Msg-id | 435A4554.6060103@list.ru обсуждение исходный текст |
Список | 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 так сильно ошибается? -- У каждого в башке свои тараканы...
В списке pgsql-ru-general по дате отправления: