SubQuery speed

From: andreas(dot)fredriksson(at)pacer(dot)se
To: pgsql-sql(at)postgresql(dot)org
Subject: SubQuery speed
Date: 1998-09-08 14:45:46
Message-ID: Pine.LNX.4.00.9809081635420.676-100000@zenith.pacer.se
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql


Hi, I'm writing a indexed web search, stuffing some data into a
few pgsql tables.

The query involved can look something like:

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?

Thanks for your input,
---
Andreas `dep' Fredriksson andreas(dot)fredriksson(at)pacer(dot)se
Programmerare, Pacer Communication www.pacer.se, 08-665 34 10

Linux: Because rebooting is for adding new hardware.

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Kevin O' Gorman 1998-09-08 14:54:52 Re: [SQL] Looking for easy SQL documentation!
Previous Message Kevin O' Gorman 1998-09-08 14:04:58 Re: [SQL] Looking for easy SQL documentation!