>>Lets say I have a table with 4 fields
>>
>>itemKey INT(10) unsigned auto_increment primary key
>>status enum("forsale", "sold")
>>description TEXT
>>price DECIMAL(10,2)
>>
>>And I do a
>>
>>SELECT * FROM table
>>WHERE MATCH (description) AGAINST ("A really nice toy")
>>AND status="forsale"
>>ORDER BY MATCH (description) AGAINST ("A really nice toy")
>>LIMIT 10
>>
>>And lets further state that there at 10,000,000 records in the table and 
>>7,500,000 of them are for sale. Lets also say that the minimum word 
>>length is set to 3 (so toy is considered significant for the fulltext 
>>search) and there is a fulltext index on description.
>>
>>Lets also assume that there are 1,000,000 records with the word "really" 
>>, 1,000,000 records with the word "nice" and 500,000 records with the 
>>word "toy". Lets say there are only 500 records with all three words.
>>
>>Approximately how many records will this query need to look at to return 
>>a result? Approximately how long will it take?
>>
> 
> First - fulltext engine does NOT looks at records at all for text search,
> it builds a list of documents purely from the index. Of course, MySQL
> can later retrieve actual rows, based on this list.
> 
> So, I'll answer the question "...how many index entries will this query..."
> 
> The query, as you wrote it, will look at all the 2,500,000 index entries.


Ok. That is what I thought.


> 
> 
>>How would the following query compare:
>>
>>SELECT * FROM table
>>WHERE MATCH (description) AGAINST ("+A +really +nice +toy")
>>AND status="forsale"
>>ORDER BY MATCH (description) AGAINST ("+A +really +nice +toy")
>>LIMIT 10
>>
> 
> In 4.0.1 this query will be absolutely identical to the first one.
> As boolean fulltext search was not documented we took a liberty of
> changing the syntax slightly. Now it IS documented.


So +, - etc don't do anything unless you switch to boolean mode.


> 
> The query
> 
>   SELECT * FROM table
>   WHERE MATCH (description) AGAINST ("+A +really +nice +toy" IN BOOLEAN MODE)
>   ORDER BY MATCH (description) AGAINST ("+A +really +nice +toy" IN BOOLEAN MODE)
>   LIMIT 10
> 
> will abort the search when it retrieves the 500th document with all the
> three words. It's impossible to say, how many index entries it will look
> at.


Where does the number 500 come from? Did you mean 10?


> 
> The query
> 
>   SELECT * FROM table
>   WHERE MATCH (description) AGAINST ("+A +really +nice +toy" IN BOOLEAN MODE)
>   LIMIT 10
> 
> will abort the search when it retrieves the 10th document with all the
> three words. It's impossible to say, how many index entries it will look
> at.
> 
> Regards,
> Sergei
> 
> 



---------------------------------------------------------------------
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