Harrison Fisk <[EMAIL PROTECTED]> writes:
>The difference between the count(*) and the other query is that the  
>real query has to use the datafile to retrieve the data when you are  
>involving the actual columns.  With the count(*) query it is using an  
>Index only read, meaning that it doesn't have to the use the datafile  
>at all to resolve it.  If you do an EXPLAIN on the count(*) query, you  
>should see a 'Using Index' in the Extra column.  So it is using the  
>index and estimating it is going to have to read 3885524 rows from the  
>data file.  Assuming the estimate is close, that will be an extra  
>3885524 disk seeks and reads to find the data for your query.  That is  
>why vmstat is showing the query doing much more disk i/o.

Harrison,
     Thanks for helping me to better understand what the explain was
telling me.  Though I'm not sure it quite fits with the other data
I collected from the strace of the mysqld that servicing my query.  It
looked to be doing a sequential pread, based on the record size of
9 bytes.  This was one reason I felt the query was doing a table
scan to fulfill the query.

     One interesting experiment I did was to try to do a summation
query with and without an index.  The query with an index too 31 hrs.
While the same data set without the index took 7 hours.

>The only way you could improve this is to make a combined index across  
>(member_id, pts_awarded) and get rid of the only (member_id) index.   
>Then MySQL would be able to again use only the index to resolve the  
>query.  Keep in mind this would increase your index size by about a  
>third, so it would take more diskspace and you would fit less into  
>cache, so it would decrease response times slightly for the count(*)  
>query.

     Thank you for this suggestion.  I've dropped the original index
and have added the composite index to the table.  It increased the
size of the index file by about 50% as expected, but the summation
query seems to be doing a much better job at scanning the data in
the index rather than in the index/table combination.  We'll see
how long this summation query takes at this point.

           Thank you for your help and explanations,
                Brad Eacker ([EMAIL PROTECTED])



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

Reply via email to