Re: Improving a simple query?
От | Steve Wampler |
---|---|
Тема | Re: Improving a simple query? |
Дата | |
Msg-id | 20030713204610.GA18123@weaver.tuc.noao.edu обсуждение исходный текст |
Ответ на | Re: Improving a simple query? ("Richard Huxton" <dev@archonet.com>) |
Ответы |
Re: Improving a simple query?
Re: Improving a simple query? Re: Improving a simple query? |
Список | pgsql-performance |
On Sun, Jul 13, 2003 at 08:09:17PM +0100, Richard Huxton wrote: > > I'm not an SQL or PostgreSQL expert. > > > > I'm getting abysmal performance on a nested query and > > need some help on finding ways to improve the performance: > [snip] > > select * from attributes_table where id in (select id from > > attributes where (name='obsid') and (value='oid00066')); > > This is the classic IN problem (much improved in 7.4 dev I believe). The > recommended approach is to rewrite the query as an EXISTS form if > possible. See the mailing list archives for plenty of examples. > > Could you not rewrite this as a simple join though? Hmmm, I don't see how. Then again, I'm pretty much the village idiot w.r.t. SQL... The inner select is locating a set of (2049) ids (actually from the same table, since 'attributes' is just a view into 'attributes_table'). The outer select is then locating all records (~30-40K) that have any of those ids. Is that really something a JOIN could be used for? -Steve -- Steve Wampler -- swampler@noao.edu Quantum materiae materietur marmota monax si marmota monax materiam possit materiari?
В списке pgsql-performance по дате отправления: