Arthur,

Is it faster if you do:
select SQL_CALC_FOUND_ROWS category use index(category)  from books
where category=1 limit 0,10

ie change "*" to "category" (which can be read from the index)?

Andy

> -----Original Message-----
> From: Arthur Radulescu [mailto:[EMAIL PROTECTED]
> Sent: 07 September 2004 14:23
> To: [EMAIL PROTECTED]
> Subject: problems counting the number of returned rows
> 
> Hello!
> 
> I am having a problem retrieving the number of records matching a certain
> condition from the database.
> I have a large table of about 3 millions records
> 
> A simple query like the one below returns me the results
> 
> select * use index(category) from books
> where category=1 limit 0,10
> 
> This query takes about 0.01 seconds since I have an index on the category
> column
> 
> When I try to retrieve the number of rows matching this condition I am
> using one of the following 2 queries
> 
> 1. select SQL_CALC_FOUND_ROWS * use index(category)  from books
> where category=1 limit 0,10
> 
> and then I retrieve the needed result using FOUND_ROWS()... This query
> where I make use of SQL_CALC_FOUND_ROWS takes about 15 seconds
> 
> 2. select count(*)  use index(category)  from books where category=1
> 
> which returns me the needed result...  This query takes about 3 seconds
> 
> using explain on both queries I notice that the first query is not using
> anymore the index and I cannot figure out exactly why...
> 
> However the main problem is that each query is way to slowly and I cannot
> figure out any other better method to retrieve this result... I am missing
> anything here? Is there any other better method to return the number of
> results with a certain condition for a large database?
> 
> 
> Any help would be really appreciated
> 
> 
> Regards,
> Arthur



-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to