Greetings, I am struggling trying to get good performance
using indexes.
I'll spare the details and narrow down the situation. I have about
100,000 rows of data with the following fields:
title - vachar(64)
description - text
state - varchar(2)
priority - int
modified - date
People type in a search string, and I need the results ordered in
the following way:
1) by priority DESC
2) items matching the title
3) items matching the description
I've experimented with full-text search, but cannot get it to do
this effeciently all in one query because of the way I need
to order things. I tried adding two full-text indexes like:
SELECT title, MATCH(title) AGAINST ('query') AS intitle FROM mytable WHERE
MATCH(title, description) AGAINST ('query') [AND state = 'state'] ORDER by priority
desc, intitle desc, modified desc;
but this only uses the (title,description) index, an not the (title)
index or the state index.
It would be much faster if I could do only a full text search on
records with the state that is selected. (Any ideas on how to do this?)
Currently I do the following which which is really weak when there is
no state selected:
SELECT title, (title LIKE '%query%') AS intitle FROM mytable WHERE ((description LIKE
'%query%') OR (title LIKE '%query%')) [AND state='state'] ORDER BY priority desc,
intitle desc, modified desc;
Does anyone have any better ideas? I would consider doing multiple queries
using the different indexes but then I don't know how many rows matched
without taking out the duplicates which would be expensive, I think.
Thanks in advance,
John
---------------------------------------------------------------------
Before posting, please check:
http://www.mysql.com/manual.php (the manual)
http://lists.mysql.com/ (the list archive)
To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php