tsearch2 query

Started by Matthew Terenzioover 17 years ago2 messagesgeneral
Jump to latest
#1Matthew Terenzio
mterenzio@gmail.com

There are less than 20,000 records being searched here, but the query takes
several minutes.

I know this may not be enough info, but would one suggest I optimize the
query or put my attention towards other areas.

SELECT id,date,headline as head,headline(body,q),rank(vectors,q),timestamp
FROM stories,to_tsquery('$query') AS q WHERE vectors @@ q ORDER BY $sort
DESC OFFSET $offset LIMIT 20

#2Oleg Bartunov
oleg@sai.msu.su
In reply to: Matthew Terenzio (#1)
Re: tsearch2 query

On Thu, 2 Oct 2008, Matthew Terenzio wrote:

There are less than 20,000 records being searched here, but the query takes
several minutes.

I know this may not be enough info, but would one suggest I optimize the
query or put my attention towards other areas.

SELECT id,date,headline as head,headline(body,q),rank(vectors,q),timestamp
FROM stories,to_tsquery('$query') AS q WHERE vectors @@ q ORDER BY $sort
DESC OFFSET $offset LIMIT 20

This is common mistake, use subselect and you'll be happy.

Explanation:

headline() is very cost operation, so in your query you obtain headline()
for *ALL* results, while you need to do this only for 20 of them.
Feel the difference ?

Regards,
Oleg
_____________________________________________________________
Oleg Bartunov, Research Scientist, Head of AstroNet (www.astronet.ru),
Sternberg Astronomical Institute, Moscow University, Russia
Internet: oleg@sai.msu.su, http://www.sai.msu.su/~megera/
phone: +007(495)939-16-83, +007(495)939-23-83