Re: [HACKERS] subselect and optimizer
От | Vadim B. Mikheev |
---|---|
Тема | Re: [HACKERS] subselect and optimizer |
Дата | |
Msg-id | 353D878B.BD3F3A02@sable.krasnoyarsk.su обсуждение исходный текст |
Ответ на | subselect and optimizer ("Igor Sysoev" <igor@nitek.ru>) |
Список | pgsql-hackers |
Igor Sysoev wrote: > > I'm using PostgreSQL 6.3.2. > > As reported in some messages ago PostgreSQL has problem with > "... where some_field in (select ..." type subqueries. > One of the solutions was to create indecies. > I created two indecies for character(9) fields key and newkey: > create index key_i on bik (key); > create index newkey_i on bik (newkey); > run two quiery explain: > > bik=> explain select * from bik where key in (select newkey from bik where > bik='044531864'); > NOTICE: Apr 21 14:15:41:QUERY PLAN: > > Seq Scan on bik (cost=770.92 size=1373 width=113) > SubPlan > -> Seq Scan on bik (cost=770.92 size=1 width=12) ^^^ This is very strange. Index Scan should be used here. I'll try to discover this... BTW, IN is slow (currently :) - try to create 2-key index on bik (bik, newkey) and rewrite your query as select * from bik b1 where EXISTS (select newkey from bik where bik = '....' and b1.key = newkey) And let's know... (Note, that index on (newkey, bik) may be more useful than on (bik, newkey) - it depends on your data). Vadim
В списке pgsql-hackers по дате отправления: