Hi! I have the following table:
create table law_words ( l_id int unsigned not null, w_id int unsigned not null, primary key (w_id, l_id) ); The request is: SELECT DISTINCT w0.l_id FROM law_words as w0 inner join law_words as w1 on w0.l_id=w1.l_id where w0.w_id in (258,282,... about 30 ids) and w1.w_id in (405, 2017, and so on about 50 ids); The basic idea is thart law_words hold index of words (w_id) for each law (l_id), so law can be found by words, which are specified by user and the their ids are looked up in vocabular. Now law_words has 288000 records and that request takes about 1 second on a pc with 1GB of RAM and dual Pentium III XEON 550Mhz, which is TOO MUCH! Explain show thart mysql is using ' range' and primary index, and about 400 records for each table. For three specified words request takes about forever, so no search is possible for three words. The request is using INNER JOIN to get the words in the 'AND' manner (laws which contain ALL specified words). I don't understand what i am doing wrong, since i thought it is a basic technology behind any search engine. Please, help, if you can. Regards, Artem --------------------------------------------------------------------- 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