Hi,
I need to improve the performance of a 1-word search engine
which I've created. Currently the RAM is 1 GIG and the key_buffer is set at
512 MB which has improved the search results but I think perhaps I can improve
my method of search with your help perhaps. The program is coded to run in
mod_perl or just perl.
It consists of 2 tables: word and content.
content consists of 2 fields:
rec_id int unsigned not null,
description varchar(200) not null
word consists of 2 fields:
word varchar(50) not null,
rec_id int unsigned not null
word is created from content. Each actual word from the field
content.description is created as a record in the table word with its rec_id.
Both tables are indexed on rec_id and word respectively.
A keyword is entered such as "book".
The search consists of 2 SQL queries
Query 1: select rec_id from word where word='book';
All the rec_ids are captured into an array.
Query2: select description from content where rec_id=?
I then loop over the rec_ids stored in the array @codes.
my $SqlCmd = 'select description from content where rec_id=?';
my $sth = $dbh->prepare( $SqlCmd );
$sth->{'mysql_use_result'} = 1; # doesn't store entire result
while ( $continue ) {
if ($njk > $#codes) { last; }
$cd = $codes[$njk++];
$sth->execute($cd);
@row = $sth->fetchrow_array;
# Collect results for display etc ...
}
$sth->finish;
Test Results:
Query 1 Query 2
pottery (915 records) 0 sec 1 sec
book (12456 records) 0 sec 13 sec
computer (21999 records) 1 sec 21 sec
Question: Is there a better way of doing this with respect to:
A. My definition of fields and their types.
B. My queries - it seems that Query 2 could perhaps be made
faster.
I thank you in advance. It is my hope to increase to 2, 3 and 4 word searches
once I've maximized the above search logic.
regards
David Jourard
---------------------------------------------------------------------
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