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

Reply via email to