From: Sergei Golubchik Date: January 10 2011 11:03am Subject: Re: Optimization about count(*) List-Archive: http://lists.mysql.com/internals/38232 Message-Id: <20110110110356.GB6931@janus.mylan> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Hi, sky.jian! On Jan 10, sky.jian wrote: > I think MySQL just need to read the B-Tree index for this count(*). Yes, and it does that. Assuming the engine supports "just reading the index" - not every storage engine does. > On 01/09/2011 11:41 PM, Sergei Golubchik wrote: >> >>> sql: >>> select count(*) from t where id> 10 and id< 1000000; >>> In table t, there is an B-tree index on id field, this sql will read >>> hundreds of thousandes of lines from the storage engine, this is a >>> time-consuming operation. >>> If tell the storage engine computing the count in the range, does it >>> have higher performance? (using records_in_range() api and so on) >>> >> There's no API for that in MySQL yet. >> records_in_range() is approximate, it cannot be used for count(*). >> Regards, Sergei