Re: [SQL] SubQuery speed
От | Vadim Mikheev |
---|---|
Тема | Re: [SQL] SubQuery speed |
Дата | |
Msg-id | 35F5E7F3.9FE5925C@krs.ru обсуждение исходный текст |
Ответ на | SubQuery speed (andreas.fredriksson@pacer.se) |
Список | pgsql-sql |
andreas.fredriksson@pacer.se wrote: > > BEGIN; > DECLARE CURSOR curs FOR > SELECT url,title FROM idx_files WHERE id IN ( > SELECT file_id FROM idx_ref WHERE word_id IN ( > SELECT id FROM idx_words WHERE word = 'search term 1' OR .. ) ); > FETCH FORWARD 10 IN curs; > END; > > The idx_files table holds about 1.000 rows, the idx_words table holds > about 50.000 words, and the idx_ref is a massive 250.000+ > row cross-reference (file_id, word_id) which links the words and > pages together. > > A query like the above took several hours on my Pentium 200 at work before > I killed the stuck daemon. This is kind of strange since the innermost > subquery is only suppose to return a single id. :-( > > Are there any alternate methods of solving this? I don't think it's > possible to write this kind of query using a multi-JOIN? Try to rewrite query using EXISTS instead of IN and create indices. Vadim
В списке pgsql-sql по дате отправления: