sql performance help needed - Mailing list pgsql-sql

From dLux
Subject sql performance help needed
Date
Msg-id 20000120135632.C14384@dlux.hu
Whole thread Raw
List pgsql-sql
Hello!
 I have two tables:
 ns_article has about 2000 entries, and ns_word has about 2000000.

ns_word is a word-index for the article. I want to implement a
word-search in it.
I want to implement a search function, which can search with "like
'wordstart%'". I need to do it with a lot of keywords like altavista
does (with +: intersect, without +: union; with -: except), but I
haven't found any fast result.

The following query tree would be good:
- sort by atime - index scan on ns_article (by article_id)   hash join:     - intersect/union/except       - index scan
onns_word (by index_word)       - index scan on ns_word (by index_word)     ...
 

My current solution is:
(select distinct atime(get_ns_article(article_id)) as a, article_id
from ns_word where index_word like 'wordstart%') union (...)
intersect (...) order by a;

But this is VERY slow if I search with more than one keyword (when
intersect/union is on use). It is quite fast for one keyword (like
this: select distinct atime(get_ns_article(article_id)) as a,
article_id from ns_word where index_word like 'linux%').

the get_ns_artcile is a function which returns a tuple from the
ns_article table by an article_id.

Please help me to make it faster! We have enough memory, so this is
not a problem!

Thanks again,

dLux

--------------------------------------
Here are the table defs:
create table ns_article ( article_id int not null default nextval('ns_article_seq'), site text, atime timestamp, ...
);

create unique index ns_article_pkey on ns_article (article_id);
create unique index ns_article_url_title on ns_article (url,title);
create index ns_article_atime on ns_article (atime);

create table ns_word ( article_id int, -- cikk száma orig_word text, index_word text, word_position int
);

create index ns_word_index_word on ns_word (index_word);
create unique index ns_word_article_wordpos on ns_word (article_id,
word_position);

dLux
--                            Tel: (+36)/30-9663314

----- End forwarded message -----

dLux
--
god:~# create world
Segmentation fault (core dumped)


pgsql-sql by date:

Previous
From: Kovacs Zoltan
Date:
Subject: inserting values into arrays
Next
From: "T.I.P."
Date:
Subject: inserting values into arrays